用C#连接和读取.MDB项

Sha*_*ech 3 c# ms-access

是否可以连接到本地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);
        }
Run Code Online (Sandbox Code Playgroud)

Ste*_*eve 8

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

 }
Run Code Online (Sandbox Code Playgroud)

如果你只有一个记录而只有一个字段,那么更好的解决方案是方法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
Run Code Online (Sandbox Code Playgroud)

可能我还应该提一下,如果查询没有找到userid的匹配项,ExecuteScalar会返回null,所以最好小心这里的转换

     object result = command.ExecuteScalar();
     if( result != null)
        int userID  = (int)result;
        .....
Run Code Online (Sandbox Code Playgroud)