有没有一种简单的方法可以将整个 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

其他提示

您应该能够使用 OleDb连接.

赫雷斯 关于使用它来访问 MS Access 文件的 DB 访问的教程。

在获取表名方面,早在 VB6 时代我就一直使用 ADOX,不知道现在他们在 .NET 中是如何做到这一点的。虽然我知道访问文件中有一个系统表 - 想说“mso ...”。我谷歌!

编辑

啊哈! msys对象 !!xD

微软软件定义网络 有一篇关于如何使用 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 时,您可能至少会得到一些无用的答案。

你会受到像我这样的人的责骂,因为开发人员确实应该知道不要混淆关键的区别。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top