将访问文件读入数据集
时间:2020-03-05 18:48:25 来源:igfitidea点击:
是否有一种简单的方法可以将整个Access文件(.mdb)读入.NET(特别是Cor VB)的DataSet中?
还是至少要从访问文件中获取表列表,以便我可以遍历表并将其一次添加到DataSet中?
解决方案
回答
我们应该能够使用OleDbConnection访问它。
这是有关使用DB Access访问MS Access文件的评论。
在获取表名方面,在我的VB6日子里,我一直使用ADOX,不确定现在在.NET中如何使用它们。.尽管我知道访问文件中有一个系统表想说" mso ..."。 。我谷歌!
编辑
啊哈! msysobjects! xD
回答
MSDN上有一篇有关如何使用ADO.NET来连接和编辑Access数据库中的记录的文章。建立OleDB连接后,我们可以轻松创建DataReader / DataAdapter并根据需要进行处理。
编辑:加!诅咒你的罗布和你像神一样的打字能力!!! 8 ^ D
回答
感谢建议。我能够使用这些样本来组合这段代码,这似乎实现了我想要的功能。
Using cn = New OleDbConnection(connectionstring) cn.Open() Dim ds As DataSet = new DataSet() Dim Schema As DataTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"}) For i As Integer = 0 To Schema.Rows.Count - 1 Dim dt As DataTable = New DataTable(Schema.Rows(i)!TABLE_NAME.ToString()) Using adapter = New OleDbDataAdapter("SELECT * FROM " + Schema.Rows(i)!TABLE_NAME.ToString(), cn) adapter.Fill(dt) End Using ds.Tables.Add(dt) Next i End Using
回答
在《不到点》中对此进行了讨论。这是讨论中的一个代码示例。
public DataTable GetColumns(string tableName) { string[] restrictions = new string[4]; restrictions[2] = tableName; _connDb.Open(); DataTable mDT = _connDb.GetSchema("Columns", restrictions); _connDb.Close(); return mDT; }
回答
我们最初的措辞是胡说八道:
Is there an easy way to read an entire Access file (.mdb) into...
我们当然不希望MDB文件的全部内容。我们想要的是存储在MDB中的数据表的内容。请记住,我们也不需要系统表的内容。
关键点:
我们问的是JET,而不是ACCESS。
Jet是作为Access的默认数据存储(并在其中存储Access自己的对象)提供的数据库引擎。但是"访问"的意义远不止数据表。
每当我们问一个问题并使Access和Jet混淆时,我们至少都会得到一些无用的答案。
而且我们会被我这样的人责骂,因为开发人员确实应该比模糊重要区别更了解。