使用OLE-DB从数据库读取附件我正在尝试使用C#读取MicrosoftAccess数据库。我正在使用OLE-DB类。问题是这段代码OleDbDataReaderreader=Command.ExecuteReader();while(reader.Read()){Console.WriteLine(reader.GetFieldType(0)+"t"+reader.GetFieldType(1)+"t"+reader.GetFieldType(2)+"t"+reader.GetFieldType(3)+"t"+reader.GetFieldType(4)+"t"+reader.GetFieldType(5));}告诉我第5个字段来自数据类型字符串。但它是一个附加组件。当我尝试读取这个字符串时,它是空的。System.Int32System.StringSystem.StringSystem.Int32System.DateTimeSystem.String有没有办法从数据库中读取附件?我知道您要求OleDb,但对于DAO,您可以说:DBEnginedbe=newDBEngine();数据库db=dbe.OpenDatabase(@"z:docstest.accdb",false,false,"");Recordsetrs=db.OpenRecordset("SELECTTheAttachmentFROMTheTable",RecordsetTypeEnum.dbOpenDynaset,0,LockTypeEnum.dbOptimistic);Recordset2rs2=(Recordset2)rs.Fields["TheAttachment"].Value;Field2f2=(Field2)rs2.Fields["文件数据"];f2.SaveToFile(@"z:docsForExample.xls");rs2.关闭();rs.关闭();参考:ManagingMicrosoftAccessAttachment-typedFieldsProgrammaticallyUsing.NET这有点棘手,但你不能只查询附件列,你只能得到文件名。您必须从附件列中的附件对象中选择值,然后拉字节数组(存储在文件数据中),然后删除通过Access添加到文件的标题:varconnection=newOleDbConnection(connectionString);连接.打开();vardt=newDataTable("附件");vardataAdapter=newOleDbDataAdapter(@"selectattachmentColumn.FileDataasfiledata,attachmentColumn.FileNameasfilename,attachmentColumn.FileTypeasfiletypefromtablename",connection);dataAdapter.Fill(dt);foreach(DataRowrowindt.Rows){varfilename=row["filename"].ToString();如果(字符串。IsNullOrWhiteSpace(文件名))继续;varfiledata=(byte[])row["文件数据"];intheader=(int)文件数据[0];byte[]actualFile=newbyte[filedata.Length-header];Buffer.BlockCopy(filedata,header,actualFile,0,actualFile.Length);//用字节数组做事!File.WriteAllBytes("C:\"+文件名,actualFile);请记住,Access将压缩未压缩的文件。更多关于这里。希望这对你有用!以上就是C#学习教程:使用OLE-DB从数据库中读取附加文件共享的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
