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

时间:2013-05-17 10:20:18

标签: c# mysql winforms match

这里我想验证用户使用离开事件功能输入的数据,所以我想在这里做的是匹配用户在数据库中输入的数据。我在这里使用这个代码做到了,但我不确定我是否做得对。我试图运行它,但它不起作用。

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

    }
}

1 个答案:

答案 0 :(得分:0)

您可以使用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);
        }

    }
}