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

时间:2016-08-25 11:20:18

标签: c# .net winforms ms-access

我有一个访问数据库(mdb)。其中包含列ID,名称,电子邮件ID。我有文本框显示结果让我们说ID_textbox,Name_textbox,EmaiId_textbox。我有一个文本框和一个名为find的按钮。

当我在文本框中输入值并单击“查找”按钮时,我想要的是什么。它应该在ID列中搜索值,并获取该行的名称和电子邮件的结果,并将其显示在文本框中。

我们将不胜感激。感谢

我用谷歌搜索了这不是一个重复的问题。我无法在谷歌找到答案,所以我提出了一个问题。 Plzz帮助我。

我尝试了一些代码

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

我发现了这个问题。以上是公共功能,并没有改变tb值。如何解决它

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

将您的IF语句更改为“有效”,

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

答案 2 :(得分:-1)

互联网上充满了这个问题的答案,还有大量的初学者视频展示了如何做到这一点。无论如何,您可以使用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. 确保不是套管问题。
  2. 请确保您正在查找正确的mdb文件(访问是基于文件的,并且在项目中,您正在查看的文件可能不是您认为的文件,除非您使用的是完整路径和文件名)。