下面的代码允许我在combox中显示数据库中的3列,我的意思是它工作正常,但是当我向SQL requete添加条件时,它什么也没显示。
以下是添加的条件:
{{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);
}
}
}
}
}