.net 将Access文件读入数据集中

.net 将Access文件读入数据集中,.net,ms-access,dataset,.net,Ms Access,Dataset,有没有一种简单的方法可以将整个Access文件(.mdb)读入.NET(特别是C#或VB)中的数据集 或者至少要从access文件中获取一个表列表,以便我可以循环浏览它,并将它们一次添加到数据集中?您应该能够使用 数据库访问上的tut,用于MS access文件 在获取表名方面,早在我的VB6时代,我就一直使用ADOX,不知道他们现在如何在.NET中实现这一点。。虽然我知道access文件中有一个系统表,但我想说“mso…”。我喜欢谷歌 编辑 啊哈!msysobjects!!xD有一篇关于如何使

有没有一种简单的方法可以将整个Access文件(.mdb)读入.NET(特别是C#或VB)中的数据集


或者至少要从access文件中获取一个表列表,以便我可以循环浏览它,并将它们一次添加到数据集中?

您应该能够使用

数据库访问上的tut,用于MS access文件

在获取表名方面,早在我的VB6时代,我就一直使用ADOX,不知道他们现在如何在.NET中实现这一点。。虽然我知道access文件中有一个系统表,但我想说“mso…”。我喜欢谷歌

编辑 啊哈!msysobjects!!xD有一篇关于如何使用ADO.NET连接和编辑Access数据库中的记录的文章。建立OleDB连接后,您可以根据需要轻松创建DataReader/DataAdapter和进程


编辑:嘎!诅咒你罗布和你的上帝般的打字能力!!!谢谢你的建议。我能够使用这些示例来组合这段代码,这似乎实现了我想要的

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;
    }

你最初的问题措辞是胡说八道:

有没有一种简单的方法可以将整个Access文件(.mdb)读入

您当然不需要MDB文件的全部内容。您需要的是存储在MDB中的数据表的内容。请记住,您也不需要系统表的内容

关键点是:

你问的是JET,不是访问权限

Jet是数据库引擎,作为Access的默认数据存储(Access自己的对象存储在其中)。但是“访问”不仅仅意味着数据表

每当你问一个问题并混淆Access和Jet时,你可能会得到至少一些无用的答案

你会被我这样的人责骂,因为开发人员真的应该知道不要混淆关键的区别