将组合框中输入的数据与数据库相匹配

本文关键字:数据库 数据 组合 输入 | 更新日期: 2023-09-27 18:13:58

这里我想通过使用leave事件函数来验证用户输入的数据,所以我想在这里做的是匹配用户在数据库中输入的数据。我是用这个代码做的但我不确定我做的对不对。我试着运行它,但是它不工作。

private void cboBranch_Leave(object sender, EventArgs e)
{
    if (cboBranch.Text.Length > 0)
    {
        try
        {
            using (MySqlConnection con = new MySqlConnection(serverstring))
            {
                string query = "SELECT * FROM tblBranches WHERE branch_name=@branch";
                con.Open();
                using (MySqlCommand cmd = new MySqlCommand(query, con))
                {
                    using (MySqlDataReader dr = cmd.ExecuteReader())
                    {
                        cmd.Parameters.Add("@branch", MySqlDbType.VarChar, 30).Value = cboBranch.Text;
                        int count = 0;
                        bool flag = false;
                        while (dr.Read())
                        {
                            count++;
                            if (count == 1)
                            {
                                flag = true;
                            }
                        }
                        if (flag == false)
                        {
                            MessageBox.Show("The Branch name you entered does not match.", "AFICIONADO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            cboBranch.Select();
                        }
                    }
                }
            } 
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
}

将组合框中输入的数据与数据库相匹配

您可以使用SELECT COUNT(*)....从表中获取计数,并且在将参数附加到命令之前执行命令。比如:

private void cboBranch_Leave(object sender, EventArgs e)
{
    if (cboBranch.Text.Length > 0)
    {
        try
        {
            using (MySqlConnection con = new MySqlConnection(serverstring))
            {
                string query = "SELECT count(*) FROM tblBranches WHERE branch_name=@branch";
                con.Open();
                using (MySqlCommand cmd = new MySqlCommand(query, con))
                {
                    cmd.Parameters.Add("@branch", MySqlDbType.VarChar, 30).Value = cboBranch.Text;
                    //Use ExecuteScalar
                    int count = Convert.ToInt32(cmd.ExecuteScalar());
                    if (count <= 0)
                    {
                        MessageBox.Show("The Branch name you entered does not match.", "AFICIONADO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        cboBranch.Select();
                    }
                }
            }
        }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
}