0

我正在尝试使用一个查询来计算我的 DB2 数据库中的所有记录,其中使用数组的内容来搜索表。

           string[] strNumbers = txtNumbers.Text.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

               string strSearch = "";
                   strSearch = "SELECT COUNT(*) FROM TABLENAME WHERE NUMBER = '" + strNumbers + "' AND COMMENT = '" + strMessage + "'";

                DB2Command cmdSearchTable = new DB2Command(strSearch, db2Connection);

                int nodeCount = 0;
                nodeCount = int.Parse(cmdSearchTable.ExecuteScalar().ToString());

if (nodeCount == 0) {
 Not Found          
 } else
  { Found
   }

此代码引发异常({“EXECUTE 或 OPEN 语句中的主机变量的值超出了相应使用的范围。”})

但是,如果我使用 strNumbers.Length 它不会引发错误,但 nodeCount 它仍然为 0。

我需要循环它还是别的什么?查询和数据库连接很好,因为我可以从同一个程序中选择、插入数据库。

谢谢

编辑 - 我已经设法解决了这个问题(见接受的答案),但现在有另一个问题。假设“1234567”在数据库中,一旦它返回 1 就可以了。如果输入它'5551234'不在数据库中,它返回0,这也很好。但是问题在于,如果输入是“1234567,5551234”,则 Count 将返回 1,因为 1234567 在数据库中,即使 5551234 不是。

有没有办法为 1234567 输出 1,然后为 5551234 输出 0?

4

1 回答 1

0

尝试改变

WHERE NUMBER = '" + strNumbers + "' AND

WHERE NUMBER IN (" + strNumbers + ") AND

确保 strNumbers 以逗号分隔。根据字段 NUMBERS 的数据类型,类似于“12345”、“12346”、“12347”或 12345、12346、12347 的内容。

于 2016-04-05T10:34:27.563 回答