我有多個存儲在Access數據庫的附件數據類型中的文檔。使用DataReader,我需要讀取多個附件及其文件名,並將它們存儲在文件系統中。會感謝你的幫助......需要使用DataReader從Microsoft Access讀取多個附件的C#代碼使用DataReader的附件數據類型
3
A
回答
2
你得到了ADO.NET的唯一數據是附加文件的名稱的分號分隔的列表。此外,您將看到ADO.NET將該列類型識別爲字符串。所以,你不可能從列中獲得實際的二進制數據(在.NET一側)。
我建議你不要使用附件作爲Access中的數據類型,如果您需要訪問Access數據庫以外的該列中的數據。只需創建單獨的表來存儲所有附件[鏈接]。
+0
謝謝伊戈爾的回答。我會努力解決這個問題... –
3
我有一個類似的問題,這是我如何使用DAO解決它。
var dbe = new DBEngine();
Database db = dbe.OpenDatabase(@"C:\tmp\access database file.accdb");
try
{
Recordset rstMain = db.OpenRecordset(
"SELECT `Attachment` FROM `table name`",
RecordsetTypeEnum.dbOpenDynaset);
while (!rstMain.EOF)
{
Recordset2 rstAttach = rstMain.Fields["Attachment"].Value;
rstAttach.OpenRecordset();
while (!rstAttach.EOF)
{
Field2 fldAttach = (Field2)rstAttach.Fields["FileData"];
string fileName = rstAttach.Fields["FileName"].Value.ToString();
fldAttach.SaveToFile(@"C:\tmp\" + fileName);
rstAttach.MoveNext();
}
rstAttach.Close();
rstMain.MoveNext();
}
rstMain.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
您應該包括頭using Microsoft.Office.Interop.Access.Dao;
。
+0
哇!它確實在工作。經過大約半天的搜索和嘗試。謝謝! – Martin
相關問題
- 1. 如何使用Microsoft Access數據庫的附件數據類型?
- 2. 附件Access數據類型?
- 3. 使用DataReader讀取日期
- 4. datareader不讀取數據
- 5. 使用的DataReader
- 6. 使用DataReader的
- 7. 使用Access VBA從outlook獲取附件
- 8. 通用方法我目前使用此方法來讀取從DataReader的數據從DataReader的
- 9. 使用Microsoft Exchange Web服務從郵件中讀取附件
- 10. 從DataReader讀取數據時發生OutOfMemoryException
- 11. 使用Pandas Datareader讀取多個來源的股票
- 12. 使用DataReader和OLEDB Jet數據提供程序讀取CSV文件時,如何控制列數據類型?
- 13. 可以使用DataReader
- 14. Gmail中的附件使用代碼
- 15. 使SqlDataAdapter/Datareader「真正只讀」
- 16. 從Android USB附件讀取數據
- 17. 如何從數據透視表Coloumns使用DataReader或DataSet類
- 18. 使用datareader類通過套接字流讀取圖像
- 19. 從C++中的文本文件讀取多個數據類型
- 20. 在ASP.NET中使用多個DataReader的問題(C#)
- 21. 使用DataReader將數據庫多個記錄存儲到變量
- 22. 即使沒有附件,是否需要使用C#處理SMTP?
- 23. ElasticSearch&附件類型(NEST C#)
- 24. 從DataReader的
- 25. 使用angularjs數據類型被附加
- 26. 使用Android獲取郵件和Gmail郵件的多個附件
- 27. 使用DataReader連接到數據庫的過多
- 28. 從DataReader
- 29. c中的多個附件#
- 30. 如何使用DataSet代替DataReader
你有什麼試過自己,它在哪裏失敗?這不是問一個問題,它說明了一個問題。 – TJHeuvel
我想知道爲什麼這篇文章被關閉......其實,這裏的問題很明顯。 Shahid需要一個解決方案來獲取OLE DB上的附件。問題在於,數據存儲在Access特定數據類型列(附件類型)中並不容易。 ADO.NET只獲取用分號分隔的文件名列表(只是文件名而不是完整路徑)。 Sharid想知道是否有可能獲得**實際的**文件數據(字節)和完整的文件名,以便他可以在.NET端恢復文件。 –
附件存儲在Access數據庫本身內,只能從數據庫或查詢系統表(例如MSysObjects)訪問。後者不可能通過ADO.NET,我想。
我會看一個解決方案,它將涉及通過存儲完整文件路徑和/或二進制數據在Access端構建自定義文件附件處理。
我打算給這個問題一個投票,因爲它是1)挑戰2)有趣的 –