是否有一种简单的方法可以将整个Access文件(.mdb)读入.NET中的DataSet(特别是C#或VB)?
或者至少从访问文件中获取一个表列表,以便我可以遍历它并一次一个地添加到DataSet中?
答案 0 :(得分:5)
感谢您的建议。我能够使用这些示例来组合这段代码,这似乎达到了我正在寻找的目标。
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
答案 1 :(得分:3)
您应该可以使用OleDbConnection访问它。
Heres使用它进行MS Access文件的数据库访问。
在获取表名方面,回到我的VB6时代,我总是使用ADOX,不知道他们现在是如何在.NET中这样做的。虽然我知道访问文件中有一个系统表 - 想说“mso ...“。我谷歌!
答案 2 :(得分:2)
MSDN有一篇关于如何使用ADO.NET连接和编辑Access数据库中的记录的文章。建立OleDB连接后,您可以根据需要轻松创建DataReader / DataAdapter并进行处理。
编辑:Gah!诅咒你和你的神像打字能力! 8 ^ d答案 3 :(得分:0)
在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;
}
答案 4 :(得分:0)
你原来提出的问题是胡说八道:
是否有一种简单的方法可以将整个Access文件(.mdb)读入...
您当然不想要MDB文件的全部内容。您想要的是存储在MDB中的数据表的内容。请记住,您不需要系统表的内容。
关键点:
你问的是JET,而不是关于ACCESS。
Jet是数据库引擎,它作为Access的默认数据存储(并且存储Access自己的对象)。但“访问”意味着不仅仅是数据表。
每当你提出问题并混淆Access和Jet时,你可能会得到至少一些无用的答案。
你会被我这样的人所骂,因为开发人员真的应该知道要比混淆关键的区别更好。