连接并读取.mdb项目与C#

发布于 2025-02-13 00:42:38 字数 586 浏览 3 评论 0原文

是否可以连接到本地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);
        }

Is it possible to connect to a local MDB file and pick a single bit of info out of it ?
I have a table in a .mbd file with a single bit of info in it. I would like to have that record be output into a disabled textbox for a reference. I believe I can get the DB open, and run the query but no idea what I need to read from it.

thanks

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

泼猴你往哪里跑 2025-02-20 00:42:38

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

 }

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

     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

可能我还应该提到executesCalar返回 null 如果查询找不到匹配用户ID,因此最好在此处谨慎转换

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

To simply read a single field on your database table you could use an OleDbDataReader that could loop over the result and return the field required..

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();

 }

if you have just one record and just one field then a better solution is the method 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

Probably I should also mention that ExecuteScalar returns null if the query doesn't find a match for the userid, so it is better to be careful with the conversion here

     object result = command.ExecuteScalar();
     if( result != null)
        int userID  = (int)result;
        .....
<逆流佳人身旁 2025-02-20 00:42:38

是的。只需让适配器填充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是一个更好的解决方案,但是我的答案是针对您已经实例化的对象量身定制的。

Yes very possible. Just have the adapter fill the DataTable, also I don't think you'll need the 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();
    }

Also I think using ExecuteScalar would be a better solution, but my answer was tailored to the objects you had already instantiated.

妄司 2025-02-20 00:42:38

您可以使用

You could use OleDbCommand.ExecuteScalar to retrieve a single value. It is returned as an object and you could cast it to the correct type.

给不了的爱 2025-02-20 00:42:38

您在寻找这样的STM吗?

    OleDbCommand cmd = new OleDbCommand();
    OleDbDataReader dr = cmd.ExecuteReader();
    while (dr.Read())
    {
    // read ur stuff here.
    }

Are you looking for stm like this?

    OleDbCommand cmd = new OleDbCommand();
    OleDbDataReader dr = cmd.ExecuteReader();
    while (dr.Read())
    {
    // read ur stuff here.
    }

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文