将访问文件读入DataSet

时间:2008-09-05 18:29:05

标签: .net ms-access dataset

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

或者至少从访问文件中获取一个表列表,以便我可以遍历它并一次一个地添加到DataSet中?

5 个答案:

答案 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 ...“。我谷歌!

修改

啊哈哈! msysobjects !!的xD

答案 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时,你可能会得到至少一些无用的答案。

你会被我这样的人所骂,因为开发人员真的应该知道要比混淆关键的区别更好。