题
有没有一种简单的方法可以将整个 Access 文件 (.mdb) 读入 .NET(特别是 C# 或 VB)中的数据集?
或者至少从访问文件中获取表列表,以便我可以循环遍历它并将它们一次添加到数据集中?
解决方案
感谢您的建议。我能够使用这些示例来组合此代码,这似乎实现了我正在寻找的目标。
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
其他提示
微软软件定义网络 有一篇关于如何使用 ADO.NET 连接和编辑 Access 数据库中的记录的文章。建立 OleDB 连接后,您可以轻松创建 DataReader/DataAdapter 并根据需要进行处理。
编辑:嘎!诅咒你罗布和你上帝般的打字能力!8^D
关于这一点有一个讨论 小于点. 。这是讨论中的代码示例。
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;
}
你原来的问题的措辞是无稽之谈:
有没有一种简单的方法可以将整个 Access 文件 (.mdb) 读入...
你当然 不 想要 MDB 文件的全部内容。您想要的是存储在 MDB 中的数据表的内容。请记住,您也不需要系统表的内容。
关键点:
您问的是 JET,而不是 ACCESS。
Jet 是作为 Access 的默认数据存储提供的数据库引擎(并且在其中存储 Access 自己的对象)。但“访问”不仅仅意味着数据表。
每当您提出问题并混淆 Access 和 Jet 时,您可能至少会得到一些无用的答案。
你会受到像我这样的人的责骂,因为开发人员确实应该知道不要混淆关键的区别。
不隶属于 StackOverflow