c# - 将组合框中输入的数据与数据库进行匹配

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

    }
}

最佳答案

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

    }
}

关于c# - 将组合框中输入的数据与数据库进行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16606681/

相关文章:

c# - SizeChanged 事件,但仅在全部更改完成后发生

c# - WPF/C# 将 ObservableCollection 中的项目的属性更改更新到 ListBox

c# - 用于调用服务的 IService 接口(interface)。每个方法一个代理或一个全局类级代理

php - 存储 PHP DateInterval 的 MySQL 数据类型

java - 用用户命名的java在mysql中创建一个表?

php - 如何将用户喜欢的页面数据存储到Mysql数据库中

c# - printdocument 打印问题只打印第一页

c# - NHibernate 中的映射问题

c# - AppHarbor-/order/rpc.ashx(1): error ASPPARSE: Could not create type 'web.order.rpc'

c# - 如何为datagridview中的特定列设置自定义日期格式? - C#