1

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

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

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

vyberradekINT我转移的 IDstring

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

有人能帮我解决这个问题吗?提前致谢。 在此处输入图像描述

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

4

1 回答 1

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 在这种情况下不好,如果它们实际上是数字,则应该使用数字类型

于 2013-07-18T14:57:03.133 回答