在DB2 with Array

时间:2016-04-05 09:43:26

标签: c# sql db2 executescalar

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

           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',则计数将返回1,因为1234567在数据库中,即使5551234不是。

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

1 个答案:

答案 0 :(得分:0)

尝试更改

var loc = window.location.href;
if (localStorage.reloaded !== 'true' && (loc.indexOf('string-1') != -1 || loc.indexOf('string-2') != -1)) {
    setTimeout(function(){
        $('body').fadeOut(2000, function(){
            localStorage.reloaded = 'true';
            location.reload(true);
        });
    }, 5000); // 5 seconds for demo
}

WHERE NUMBER = '" + strNumbers + "' AND

确保strNumbers以逗号分隔。像这样的东西' 12345' 12346',' 12347'或12345,12346,12347,具体取决于NUMBERS字段的数据类型。