如何使用包含用户输入的查询填充组合框?

时间:2018-08-23 02:36:26

标签: c# mysql

我的SQL查询无法正常工作。查询是这样的:

QueryString = SELECT material FROM tbl1 WHERE vendor = UserInputVar;

此查询将在用户通过从组合框(例如,combobox1)中选择一个值进行UserInputVar后运行。该查询的作用是该查询获取的结果将填充另一个组合框(例如combobox2)。

我尝试在线查找解决方案,但是对当前问题没有任何帮助。我尝试通过以下方法自行完成:

  • 使用MySqlDataAdapter和MySqlCommandBuilder,然后使用适配器填充数据表,该数据表将成为数据源

  • 将QueryString和connect_DBstring放入MySqlCommand构造函数中,并使用MySqlCommand的变量实例。然后,使用适配器和Commandbuilder填充第二个组合框的数据源。

任何建议和链接都会有所帮助。我真的不知道该怎么办,因为我通常将MySqlDataReader用于SELECT语句,将MySqlDataAdapter用于INSERT语句。我以前没有使用SELECT和MySqlDataAdapter的经验

2 个答案:

答案 0 :(得分:1)

  1. 请勿在SQL语句中使用用户输入,因为它可以创建SQL injections

        using (MySqlConnection connection = new MySqlConnection(con))
        {
            try
            {
                connection.Open();
                using (MySqlCommand command = connection.CreateCommand())
                {
                    command.CommandText = "SELECT material FROM tbl1 WHERE vendor=@vendor"
                   command.Parameters.AddWithValue("@vendor", UserInputVar);
                    command.ExecuteNonQuery();
                    connection.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    
  2. 至于要从SQL查询填充组合框,请看以下文章: https://stackoverflow.com/a/12495086/1099716

答案 1 :(得分:0)

我设法解决了这个问题。事实证明,我的参数化查询方式是错误的,但我终于纠正了它。我没有使用MySqlCommand参数,而是使用了MySqlDataAdapter参数。起初我从不知道,但是现在我知道了。