使用 C# 连接和读取 .MDB 项

Posted

技术标签:

【中文标题】使用 C# 连接和读取 .MDB 项【英文标题】:connect and read .MDB item with C# 【发布时间】:2013-06-03 21:58:36 【问题描述】:

是否可以连接到本地 MDB 文件并从中挑选一点信息? 我在 .mbd 文件中有一个表,其中包含一点信息。我希望将该记录输出到禁用的文本框中以供参考。我相信我可以打开数据库并运行查询,但不知道我需要从中读取什么。

谢谢

var myDataTable = new DataTable();
        using (var conection = new OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;" + "data source=C:\\menus\\newmenus\\menu.mdb;Password=****"))
        
            conection.Open();
            var query = "Select siteid From n_user";
            var adapter = new OleDbDataAdapter(query, conection);
            OleDbCommandBuilder oleDbCommandBuilder = new OleDbCommandBuilder(adapter);
        

【问题讨论】:

【参考方案1】:

要简单地读取数据库表上的单个字段,您可以使用 OleDbDataReader 循环遍历结果并返回所需的字段..

var myDataTable = new DataTable();
using (var conection = new OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;" + "data source=C:\\menus\\newmenus\\menu.mdb;Password=****"))

     conection.Open();
     var query = "Select siteid From n_user";
     var command = new OleDbCommand(query, conection);
     var reader = command.ExecuteReader();
     while(reader.Read())
         textBox1.Text = reader[0].ToString();

 

如果您只有一条记录和一个字段,那么更好的解决方案是方法ExecuteScalar

     conection.Open();
     // A query that returns just one record composed of just one field
     var query = "Select siteid From n_user where userid=1";
     var command = new OleDbCommand(query, conection);
     int result = (int)command.ExecuteScalar();  // Supposing that siteid is an integer

也许我还应该提到,如果查询没有找到与用户 ID 匹配的 ExecuteScalar 返回 null,所以这里最好小心转换

     object result = command.ExecuteScalar();
     if( result != null)
        int userID  = (int)result;
        .....

【讨论】:

谢谢,是的,只有一行,只是保存sideid记录。这应该很好用。【参考方案2】:

是的,很有可能。只需让适配器填充DataTable,我认为您也不需要OleDbCommandBuilder

    using (var conection = new OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;" + "data source=C:\\menus\\newmenus\\menu.mdb;Password=****"))
    
        conection.Open();
        var query = "Select siteid From n_user";
        var adapter = new OleDbDataAdapter(query, conection);
        adapter.Fill(myDataTable);
        myTextBox.Text = myDataTable.Rows[0][0].ToString();
    

另外我认为使用ExecuteScalar 会是一个更好的解决方案,但我的答案是针对您已经实例化的对象量身定制的。

【讨论】:

【参考方案3】:

您可以使用OleDbCommand.ExecuteScalar 检索单个值。它作为对象返回,您可以将其转换为正确的类型。

【讨论】:

【参考方案4】:

你在找这样的stm吗?

OleDbCommand cmd = 新 OleDbCommand(); OleDbDataReader dr = cmd.ExecuteReader(); 而 (dr.Read()) // 在这里阅读你的东西。

【讨论】:

以上是关于使用 C# 连接和读取 .MDB 项的主要内容,如果未能解决你的问题,请参考以下文章

不知道冷就连接mdb?

如何读取注册表项的值c#

Python 读取 .mdb文件信息

access数据库和c#之间的连接

c# 连接字符串和连接app.config

使用 c# 在 32 位和 64 位窗口中打开 ms-access .mdb