2016-04-05 6 views
0

Я пытаюсь подсчитать все записи в моей базе данных DB2 с запросом, в котором используется содержимое массива для поиска в таблице.Выберите запрос подсчета в 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 или открытое заявление выходит за пределы диапазона, соответствующий его использования.»})

Однако, если я использую strNumbers. Длина не вызывает ошибку, но nodeCount это все равно 0.

Нужно ли мне петли или это что-то еще? Запрос и подключение к базе данных прекрасны, поскольку я могу выбрать, Вставить в базу данных из той же программы.

Благодаря

EDIT - мне удалось решить эту (см принятый ответ), но теперь есть еще одна проблема. Давайте скажем, что «1234567» находится в базе данных после того, как он вернет 1, что хорошо. Если вход «5551234», который отсутствует в базе данных, он возвращает 0, что также отлично. Однако проблема кроется в том, что если вход «1234567,5551234», граф вернет 1, поскольку в базе данных 1234567, хотя 5551234 нет.

Есть ли способ вывода 1 для 1234567, а затем 0 для 5551234?

+0

Db2 и MySQL - разные продукты. Не помещайте те продукты, которые не задействованы ... – jarlh

+0

'strNumbers' - массив, поэтому вы не можете конкатенировать строку и массив. какова ожидаемая строка запроса? –

+0

Ожидаемый ввод от пользователя будет числом, может быть 1234567 или 1234567, 7654321 и т. Д. Я хочу подсчитать базу данных для них. Все они хранятся в массиве strNumbers. @HariPrasad – user6097989

ответ

0

Попробуйте изменить

WHERE NUMBER = '" + strNumbers + "' AND 

с

WHERE NUMBER IN (" + strNumbers + ") AND 

Убедитесь, что strNumbers будет разделены запятой. Что-то вроде этого '12345', 12346 ',' 12347 'или 12345,12346,12347 в зависимости от типа данных поля NUMBERS.

+0

Привет, Ive добавил запятую к моему массиву var strNewResult = string.Join (",", strNumbers), и граф работает. Спасибо! :) – user6097989

+0

Приветствую вас, рад, что он сработал. –

+0

Привет, Не могли бы вы проверить мой отредактированный ответ – user6097989