c#根据条件用列填充combox

时间:2019-08-13 23:52:34

标签: c#

下面的代码允许我在combox中显示数据库中的3列,我的意思是它工作正常,但是当我向SQL requete添加条件时,它什么也没显示。

以下是添加的条件:

{{1}}

当我添加没有错误的条件时,组合框显示为空白。 我的问题是我不能在组合框中加载一个条件以上的列,如果可以的话,有人可以给我显示另一种方式。

1 个答案:

答案 0 :(得分:0)

我稍微重构了代码,现在使用 using 块来确保正确处理数据对象。并使用SQL参数清除分配文本输入并防止SQL注入攻击。不需要解决您的问题。

您应验证您的 WHERE 子句设置为数据库中使用的有效值。一个或另一个(数据库或输入文本)不包含多余的前导或尾随空格,因为这可能会影响您的结果,具体取决于您的设置。

我设置了一个测试,此代码对我有用。

    void FillData()
    {
        comboBox1.Items.Clear(); // clear items before each search

        string constring = (@"Data Source=(local);Initial Catalog=UnifaceDB;Integrated Security=True");
        string Query = "select Code,Module1,Module2,Module3 from prof where Code=@code"; // command parameter used instead of direct string concatenation

        using (SqlConnection conDataBase = new SqlConnection(constring))
        {
            using (SqlCommand cmdDataBase = new SqlCommand(Query, conDataBase))
            {
                cmdDataBase.Parameters.AddWithValue("@Code", txtAssignement.Text); // apply command parameter
                conDataBase.Open();
                using (SqlDataReader myReader = cmdDataBase.ExecuteReader())
                {
                    while (myReader.Read())
                    {
                        string sName = myReader.GetString(myReader.GetOrdinal("Module1"));
                        comboBox1.Items.Add(sName);
                        string sName2 = myReader.GetString(myReader.GetOrdinal("Module2"));
                        comboBox1.Items.Add(sName2);
                        string sName3 = myReader.GetString(myReader.GetOrdinal("Module3"));
                        comboBox1.Items.Add(sName3);
                    }
                }
            }
        }
    }