我有一个访问数据库(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值。如何解决它
答案 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();
}
您正在搜索字符串值,其尾随空格可能会影响结果以及大小写。如果没有找到任何东西: