大家好,我有这个代码 我希望它做的很简单:
SELECT * FROM klisluz WHERE IDzajsluz= id
SELECT * FROM klisluz WHERE subkey = vyberradek
但这个简单的事情使这个问题:
目前它向我显示子键不等于vyberradek
的行。怎么可能?
vyberradek
是INT
ID,我通过string
for (int i = 0; i < dtg_ksluzby.Rows.Count;i++)
{
var row = dtg_ksluzby.Rows[i];
int id = (int)row.Cells["ID"].Value;
using (var novyprikaz3 = new SqlCommand("SELECT * from klisluz WHERE subkey= '" + vyberradek + "' AND IDzajsluz='" + id + "'", spojeni))
{
spojeni.Open();
SqlDataReader precti3 = novyprikaz3.ExecuteReader();
if (precti3.HasRows)
{
row.Cells[4].Value = true;
}
spojeni.Close();
}
有人会帮我解决这个问题吗? 提前致谢。
我发布的图片显示它选择了不应该的行。
答案 0 :(得分:3)
尝试从IDzajsluz
过滤器中删除引号:
for (int i = 0; i < dtg_ksluzby.Rows.Count;i++)
{
var row = dtg_ksluzby.Rows[i];
int id = (int)row.Cells["ID"].Value;
using (var novyprikaz3 = new SqlCommand("SELECT * from klisluz WHERE subkey= '" + vyberradek + "' AND IDzajsluz=" + id , spojeni))
{
spojeni.Open();
SqlDataReader precti3 = novyprikaz3.ExecuteReader();
if (precti3.HasRows)
{
row.Cells[4].Value = true;
}
spojeni.Close();
}
}
引用('')必须仅用于varchar字段,而不能用于数值。
编辑:在这种情况下LIKE不好,如果它们实际上是数字,则应使用数字类型