使用c#连接和读取. mdb项目

本文关键字:mdb 项目 读取 连接 使用 | 更新日期: 2023-09-27 18:16:35

是否可以连接到本地MDB文件并从中选择单个信息?我在.mbd文件中有一个表,其中包含单个信息。我想有记录被输出到一个禁用的文本框供参考。我相信我可以得到DB打开,并运行查询,但不知道我需要从它读取什么。

感谢
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);
        }

使用c#连接和读取. mdb项目

要简单地读取数据库表上的单个字段,可以使用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

可能我还应该提到,如果查询没有找到userid的匹配,则ExecuteScalar返回null,因此最好小心这里的转换

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

很有可能。只要用适配器填充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将是一个更好的解决方案,但我的答案是量身定制的对象,你已经实例化。

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

你在找这样的stm吗?

<>之前OleDbCommand cmd = new OleDbCommand();OleDbDataReader dr = cmd.ExecuteReader();而(dr.Read ()){//在这里读你的东西。}