C# 文本框中的数据库值

C# 文本框中的数据库值,c#,winforms,C#,Winforms,如果我键入的凭证号存在于表中,则应在相应的文本框中显示详细信息,但如果不存在,则会显示一个消息框,其中显示(ID不存在!) 例如,凭证编号101存在于表中, 首先,我会在文本框中键入“1”,消息框会立即出现。。。 第二,我会在点击ok后继续这个数字,现在它将是数字“10”,一个消息框会再次出现,上面写着(ID不存在!)。最后,我将能够键入“101”,详细信息将显示在相应的文本框中 我的问题是,每当我键入一个数字时,就会出现一个消息框,上面写着(ID不存在!)。我该如何解决这个问题 text更改了

如果我键入的凭证号存在于表中,则应在相应的文本框中显示详细信息,但如果不存在,则会显示一个消息框,其中显示(ID不存在!)

例如,凭证编号101存在于表中, 首先,我会在文本框中键入“1”,消息框会立即出现。。。 第二,我会在点击ok后继续这个数字,现在它将是数字“10”,一个消息框会再次出现,上面写着(ID不存在!)。最后,我将能够键入“101”,详细信息将显示在相应的文本框中

我的问题是,每当我键入一个数字时,就会出现一个消息框,上面写着(ID不存在!)。我该如何解决这个问题

text更改了“textBox22”代码的属性:


为什么不尝试使用文本框的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!");
        }