SqlCommand过滤数据

时间:2013-07-18 14:45:20

标签: c# sql sql-server datagridview sqlcommand

大家好,我有这个代码 我希望它做的很简单:

SELECT * FROM klisluz WHERE IDzajsluz= id
SELECT * FROM klisluz WHERE subkey = vyberradek

但这个简单的事情使这个问题: 目前它向我显示子键不等于vyberradek的行。怎么可能?

vyberradekINT 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();
                }

有人会帮我解决这个问题吗? 提前致谢。 enter image description here

我发布的图片显示它选择了不应该的行。

1 个答案:

答案 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不好,如果它们实际上是数字,则应使用数字类型