C# 文本框中的数据库值
如果我键入的凭证号存在于表中,则应在相应的文本框中显示详细信息,但如果不存在,则会显示一个消息框,其中显示(ID不存在!) 例如,凭证编号101存在于表中, 首先,我会在文本框中键入“1”,消息框会立即出现。。。 第二,我会在点击ok后继续这个数字,现在它将是数字“10”,一个消息框会再次出现,上面写着(ID不存在!)。最后,我将能够键入“101”,详细信息将显示在相应的文本框中 我的问题是,每当我键入一个数字时,就会出现一个消息框,上面写着(ID不存在!)。我该如何解决这个问题 text更改了“textBox22”代码的属性:C# 文本框中的数据库值,c#,winforms,C#,Winforms,如果我键入的凭证号存在于表中,则应在相应的文本框中显示详细信息,但如果不存在,则会显示一个消息框,其中显示(ID不存在!) 例如,凭证编号101存在于表中, 首先,我会在文本框中键入“1”,消息框会立即出现。。。 第二,我会在点击ok后继续这个数字,现在它将是数字“10”,一个消息框会再次出现,上面写着(ID不存在!)。最后,我将能够键入“101”,详细信息将显示在相应的文本框中 我的问题是,每当我键入一个数字时,就会出现一个消息框,上面写着(ID不存在!)。我该如何解决这个问题 text更改了
为什么不尝试使用文本框的OnLostFocus事件?如前所述。这样,只有当用户放弃您的文本框时,才会调用您的代码 或者,如果您想保持
OnTextChanged
处理程序不变,我建议使用异步调用my添加UpdatePanel,如前所述。每次用户键入字符时,您都需要添加一个显示查询状态的标签,因此当您的查询未返回任何数据时,标签将显示“未找到此ID的结果”,并且不会填充任何文本框。当找到结果时,标签将显示“此ID的数据已找到”,您将相应地填充控件
我希望这有帮助,我希望我说得很清楚:-)一次连接到数据库并将所有信息存储在一个类中不会更好。您只比较数据库中的第一条记录。如果找到匹配项,则需要将其与exit循环。我不使用sql,但如果(sqldr.HasRows){textBox26.Text=sqldr[0].ToString();}您真的应该养成为字段/属性/控件指定合理名称的习惯,这似乎是不对的。此外,您还应该使用参数化sql查询,因为您当前的操作方式对sql注入是开放的。这不是答案,应该是注释。他想要即时的信息,除非用户点击页面中的其他地方,否则这些信息不会发生form@Claudius你说得对,我已经更新了我的评论,以回答更多的问题。“AnnieChoi,如果你认为它回答了你的问题,你能给我一个答案吗?它帮助了我,谢谢!”已经有解决办法了!我是这个论坛的新成员,但我认为我仍然没有资格对答案进行投票。
private void textBox22_TextChanged(object sender, EventArgs e)
{
String path = "Data Source=LOCALHOST; Initial Catalog= sadd; username=root; password=''";
MySqlConnection sqlconn = new MySqlConnection(path); //communicator //constructors
MySqlCommand sqlcomm = new MySqlCommand();
MySqlDataReader sqldr;
sqlconn.Open();
sqlcomm.Connection = sqlconn;
sqlcomm.CommandType = CommandType.Text;
sqlcomm.CommandText = "Select * from approvedrecords where VoucherNumber=" + textBox22.Text + "";
sqldr = sqlcomm.ExecuteReader();
sqldr.Read();
if (sqldr.HasRows)
{
textBox26.Text = sqldr[0].ToString();
}
sqlconn.Close();
if (textBox22.Text == textBox26.Text)
{
String path8 = "Data Source=LOCALHOST; Initial Catalog= sadd; username=root; password=''";
MySqlConnection sqlcon = new MySqlConnection(path8); //communicator //constructors
string query = "select * from approvedrecords where VoucherNumber = " + textBox22.Text + " ";
MySqlCommand cmd = new MySqlCommand(query, sqlcon);
MySqlDataReader dbr;
sqlcon.Open();
dbr = cmd.ExecuteReader();
while (dbr.Read())
{
string a = (string)dbr["CheckNumber"].ToString();
string b = (string)dbr["DateCreated"];
string c = (string)dbr["Status"];
string d = (string)dbr["PayeesName"];
string f = (string)dbr["Amount"].ToString();
string g = (string)dbr["DatePrinted"];
string h = (string)dbr["Particulars"];
string i = (string)dbr["Prepared_by"];
string j = (string)dbr["Payment_received_by"];
textBox21.Text = a;
textBox23.Text = b;
textBox28.Text = c;
textBox20.Text = d;
textBox19.Text = f;
textBox27.Text = g;
textBox18.Text = h;
textBox16.Text = i;
textBox17.Text = j;
}
}
else
{
MessageBox.Show("ID doesn't exist!");
}