使用文本框(C#)筛选DataGridView
我试图通过使用文本框过滤我的dgv(通过数据库) 我遇到的问题是,当我在文本框中输入有效的项目名称时,我得到一个错误,告诉我没有在文本框中输入有效的列名…这很奇怪…因为我非常确定我让它按名称查找项目,而不是查找列:/ 这是我的密码:使用文本框(C#)筛选DataGridView,c#,database,winforms,datagridview,C#,Database,Winforms,Datagridview,我试图通过使用文本框过滤我的dgv(通过数据库) 我遇到的问题是,当我在文本框中输入有效的项目名称时,我得到一个错误,告诉我没有在文本框中输入有效的列名…这很奇怪…因为我非常确定我让它按名称查找项目,而不是查找列:/ 这是我的密码: private void button3_Click(object sender, EventArgs e) { //CLEAR CURRENT DATA IN DGV datagridview1.Rows.
private void button3_Click(object sender, EventArgs e)
{
//CLEAR CURRENT DATA IN DGV
datagridview1.Rows.Clear();
datagridview1.Refresh();
Connection();
sqlconnection.Open();
using (sqlcmd = new SqlCommand("SELECT * FROM inventory_table WHERE Item= " + searchbox.Text, sqlconnection))
{
using (SqlDataReader sqldr = sqlcmd.ExecuteReader())
{
while (sqldr.Read())
{
datagridview1.Rows.Add(new object[]{
sqldr.GetValue(sqldr.GetOrdinal("Item")),
sqldr.GetValue(sqldr.GetOrdinal("Quantity")),
sqldr.GetValue(sqldr.GetOrdinal("id")),
});
}
sqldr.Close();
}
}
sqlconnection.Close();
}
如何修复此问题?您可能在SQL读取中引用了错误的列名:
sqldr.GetValue(sqldr.GetOrdinal("id")), // Check that "id" and other columns are correct.
用数据库中的内容仔细检查这些列引用的拼写和大小写 代码在我看来很好。。。调试并查看中的值searchbox@Rusty这就是问题所在,我已经尝试了所有我能做的事情:/唯一有效的时候是当我输入一个有效的数据库表列名时。但如果我输入了有效的项目名称,它将不起作用。您应该使用@Otiel参数worked:)谢谢@Otiel认为SQL参数是实现这一点的正确方法,这一点是正确的。但是,您之前出现该错误的原因是,您没有将
searchBox.Text
嵌入到单引号中。所以它应该是Item='“+searchBox.Text=“”