从Access MDB获取数据行并显示在文本框中

本文关键字:显示 文本 Access MDB 获取 数据 | 更新日期: 2023-09-27 18:04:09

我有一个访问数据库(mdb)。它有列ID,名称,电子邮件ID。我有显示结果的文本框,比如ID_textbox, Name_textbox, EmaiId_textbox。我有一个文本框和一个名为find的按钮。

我想要的是当我在文本框中输入一个值,然后单击查找按钮。它应该在ID列中搜索值,并获得该行的姓名和电子邮件的结果,并将其显示在那里的文本框中。

感谢你的帮助。由于

我已经用谷歌搜索过了,这不是一个重复的问题。我在谷歌上找不到答案,所以我问了一个问题。请帮帮我。

我试了一些代码

public void fff(string recno)
{
    myconn.ConnectionString = connestr;
    OleDbDataAdapter adap = new OleDbDataAdapter();
    dtcmd.Connection = myconn;
    dtcmd.CommandText = "SELECT * FROM sample WHERE [id] = '" + recno + "'";
    myconn.Open();
    var dr = dtcmd.ExecuteReader();
    dr.Read();
    email_tb.Text = dr.GetString(2);
    dr.Close();
    dtcmd.ExecuteNonQuery();
    myconn.Close();
}

我发现了问题。以上是公共函数,不改变其值。如何修复

从Access MDB获取数据行并显示在文本框中

        dtcmd.Connection = myconn;
        dtcmd.CommandText = "SELECT Name, EmailId FROM sample WHERE [id] = '" + find_tb.Text + "'";
        if (myconn.State == ConnectionState.Closed)
        {
            myconn.Open();
        }
        OleDbDataReader dr = dtcmd.ExecuteReader();
        if (dr.HasRows)
        {
            while (dr.Read())
            {
                email_tb.Text = dr["EmailId"].ToString();
            }
        }
        dr.Close();
        myconn.Close();

将IF语句更改为While,它将工作

while (dr.Read())
    {
        email_tb.Text = dr.GetString(0);
    }

互联网上有很多关于这个问题的答案,也有大量的入门视频展示了如何做到这一点。无论如何,您可以使用来自codeplex和Linq的IQToolkit,因此编写代码会更容易:

var data = db.TableName.SingleOrDefault( r => r.ID == ID_textbox );
if (data != null)
{
  Name_textbox.Text = data.Name;
  EmaiId_textbox.Text = data.Email;
}

这只是众多方法中的一种。

编辑:这是基于您后来添加的示例代码:

string path=@"c:'myFolder'MyDb.mdb";
using(OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+path))
{
   var cmd = new OleDbCommand(@"SELECT Name, EmailId 
    FROM sample 
    WHERE [id] = @id"; 
   cmd.Parameters.AddWithValue("@id", find_tb.Text.Trim());
   con.Open();
   OleDbDataReader dr = cmd.ExecuteReader();
   if (dr.Read())
   {
      email_tb.Text = (string)dr["EmailId"];
   }
   con.Close();
}

您正在搜索一个字符串值,其末尾的空格可能会影响结果,以及大小写。如果没有找到任何内容:

    请确认不是大小写问题。
  1. 请确保您正在查找正确的mdb文件(访问是基于文件的,并且在项目中您正在查找的文件可能不是您认为的,除非您使用完整路径和文件名)。