我需要能夠從Access 2003和Access 2007中提取BLOB。Access 2003將BLOBs存儲爲「OLE對象」,Access 2007爲您提供了另一個選項「Attachment 」。主要區別在於可以將多個附件添加到單個行,而每個「OLE Object」數據類型只能有一個BLOB。從.Net訪問Microsoft Access 2003和2007 BLOB字段
我必須能夠在不使用互操作的情況下執行此操作,因爲我無法強制安裝Office的依賴關係。這讓我無論是DAO還是ADO。所以我編寫了代碼,使用這兩種技術將BLOB從測試數據庫中拉出來,並嵌入了不同類型的文件類型。
我遇到的問題是,它似乎訪問包裝在某些類型的元數據的嵌入式文件。最終的結果是,文件一旦被提取,就不再是相同的,並且不能由關聯的應用程序打開,因爲它的「損壞」。 Access在這個元數據中存儲了原始文件名等內容。我需要能夠從文件中去除元數據以使文件處於其原始狀態。
有沒有可以做到這一點的黑暗伏都教魔法?關於這個問題的文件很少。任何幫助,將不勝感激。
在此先感謝。
當你說ADO時,你的意思是ADODB.Stream? – Fionnuala 2010-05-24 08:46:28
在Jet/ACE中,BLOB和OLE字段是兩種截然不同的數據類型。前者是根據您的需要存儲任意數據的純二進制字段。另一方面,OLE字段在二進制內容周圍具有標準包裝,該包裝控制如何打開和操作嵌入在其中的對象。 – 2010-05-24 16:42:07
我不確定你可以在沒有自動化的情況下完成你需要做的事情。你看過Stephen Lebans的OLE提取工具嗎? http://www.lebans.com/oletodisk.htm - 該數據庫中的代碼可能會爲您提供有關在Access中如何完成的一些想法,因此可能會爲您提供有關沒有自動化(或不自動)的情況的線索。 – 2010-05-24 16:44:11