使用DataReader从Microsoft Access附件数据类型读取多个附件需要C#代码

使用DataReader从Microsoft Access附件数据类型读取多个附件需要C#代码,c#,.net,vb.net,ms-access,ado.net,C#,.net,Vb.net,Ms Access,Ado.net,我有多个文档存储在Access数据库的附件数据类型中。使用DataReader,我需要读取多个附件及其文件名,并将它们存储在文件系统中。谢谢你的帮助 通过ADO.NET获得的唯一数据是附件名称的分号分隔列表。此外,您将看到ADO.NET将该列类型识别为字符串。因此,您无法从列(在.NET端)获取实际的二进制数据 如果需要从Access数据库之外的列访问数据,我建议您不要在Access中使用附件作为数据类型。只需创建单独的表来存储所有附件[链接]。我遇到了一个类似的问题,下面是我如何使用DAO解决

我有多个文档存储在Access数据库的附件数据类型中。使用DataReader,我需要读取多个附件及其文件名,并将它们存储在文件系统中。谢谢你的帮助


通过ADO.NET获得的唯一数据是附件名称的分号分隔列表。此外,您将看到ADO.NET将该列类型识别为字符串。因此,您无法从列(在.NET端)获取实际的二进制数据


如果需要从Access数据库之外的列访问数据,我建议您不要在Access中使用附件作为数据类型。只需创建单独的表来存储所有附件[链接]。

我遇到了一个类似的问题,下面是我如何使用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());
        }

您应该包括使用Microsoft.Office.Interop.Access.Dao的
在标题中。

您自己尝试了什么,失败在哪里?这不是在问问题,而是在说明问题。我想知道为什么这篇文章被关闭了。。。事实上,这里的问题很清楚。Shahid需要通过OLE DB获取附件的解决方案。问题在于,这并不容易,因为数据存储在访问特定的数据类型列(附件类型)中。ADO.NET仅获取以分号分隔的文件名列表(仅文件名,而非完整路径)。Sharid想知道是否有可能获取实际的文件数据(字节)和完整的文件名,以便他可以在.NET端还原文件。附件存储在Access数据库本身中,只能从数据库或通过查询系统表(例如MSysObjects)访问。后者在ADO.NET上是不可能的,我想。
我会考虑一个解决方案,它将涉及通过存储完整的文件路径和/或二进制数据在访问端构建自定义文件附件处理。
我将对这个问题进行表决,因为它是1)具有挑战性的2)interesting@Michael-你介意重新开始这个问题吗,请?@igortrman:好吧,如果你能理解的话,那就千方百计去吧。哇!它真的起作用了。经过大约半天的搜索和尝试之后。谢谢