有没有一种简单的方法可以将整个 Access 文件 (.mdb) 读入 .NET(特别是 C# 或 VB)中的 DataSet?
或者至少从访问文件中获取表列表,以便我可以遍历它并将它们一次添加到数据集中?
感谢您的建议。我能够使用这些示例将这段代码放在一起,这似乎实现了我正在寻找的东西。
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
您应该能够使用OleDbConnection访问它。
下面是关于使用它来访问 MS Access 文件的 DB 访问。
在获取表名方面,在我 VB6 的日子里,我一直使用 ADOX,不知道他们现在是如何在 .NET 中做到这一点的。虽然我知道访问文件中有一个系统表 - 想说“mso ... ”。我谷歌!
啊哈!系统对象!!xD
MSDN有一篇关于如何使用 ADO.NET 连接和编辑 Access 数据库中的记录的文章。建立 OleDB 连接后,您可以轻松创建 DataReader/DataAdapter 并根据需要进行处理。
编辑:啊!诅咒你 Rob 和你神一样的打字能力!!!8^D
Less Than Dot中有关于这一点的讨论。这是讨论中的一个代码示例。
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 混淆时,您可能至少会得到一些无用的答案。
你会被我这样的人骂,因为开发人员真的应该知道不要混淆关键的区别。