【问题标题】:Fill combobox with datafrom Database and from that combobox fill another combobox with another data from the same database用数据库中的数据填充组合框,然后从该组合框中用同一数据库中的另一个数据填充另一个组合框
【发布时间】:2019-10-11 13:13:15
【问题描述】:

两个组合框 - cmbSupplier 和 cmbProduct

我想用表格中的供应商名称填写 cmbSupplier

当我从 cmbSupplier 中选择一个值时 取决于选择的名称 供应商名称的产品应填写 cmbProduct

private void frmAddOrder_Load(object sender, EventArgs e) {

        SqlCommand cmd = new SqlCommand("SELECT sup_name from tbl_supplier",con);
        con.Open();
        SqlDataReader dr = cmd.ExecuteReader();

        while(dr.Read())
        {
            cmbSupplier.Items.Add(dr["sup_name"].ToString());
        }
        dr.Close();




    }

这是我用来填写 cmbSupplier 的代码

我尝试使用此代码填充 cmbProducts,但得到的只是一个错误

         private void cmbSupplier_SelectedIndexChanged(object sender, EventArgs e)
    {


        SqlCommand cmd = new SqlCommand("SELECT Product_Name from tbl_SupplierItems WHERE supplier_name'" + cmbSupplier.Text + "%'", con);
        con.Open();
        SqlDataReader dr = cmd.ExecuteReader();


        while(dr.Read())
        {
            cmbProduct.Items.Add(dr["Product_Name"].ToString());
        }
        dr.Close();



    }

【问题讨论】:

  • 请提供相关代码
  • 您可以使用第一个组合框上的 IndexChanged 事件来执行此操作。如果您需要更详细的帮助,您需要在问题中提供更多详细信息。
  • 我更新了我的问题的内容,如果它很混乱,我很抱歉
  • 在编写另一行代码之前,您需要阅读、理解并开始使用参数化查询。您的代码对 sql 注入是开放的。 bobby-tables.com 您还应该了解 USING 子句。在所有 IDisposable 对象(如连接和命令)周围使用它。
  • 你所拥有的似乎相当接近。但是您可能想在添加新的之前添加 cmdProduct.Items.Clear() 。您说您“遇到错误”。如果您分享错误消息,它将帮助其他人了解问题所在。

标签: c# sql-server combobox


【解决方案1】:

查询不正确。 而不是

SqlCommand cmd = new SqlCommand("SELECT Product_Name from tbl_SupplierItems WHERE supplier_name'" + cmbSupplier.Text + "%'", con);

你应该写

SqlCommand cmd = new SqlCommand("SELECT Product_Name from tbl_SupplierItems WHERE supplier_name <b>=</b> '" + cmbSupplier.Text + "%'", con);

【讨论】:

  • 请不要提供继续允许 sql 注入的糟糕做法的答案。
猜你喜欢
  • 1970-01-01
  • 2017-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-16
  • 2012-09-11
相关资源
最近更新 更多