Присвоение SELECT COUNT (*) результата запроса переменной Java - PullRequest
3 голосов
/ 26 апреля 2011

У меня были проблемы с назначением результата запроса SELECT COUNT(*) переменной Java.Я присваиваю результат запроса ResultSet.Затем я пытаюсь получить значение счетчика и присвоить его переменной.Я получаю сообщение об ошибке при попытке сделать это.

Вот мой код:

ResultSet rc1 = null;
int rowCount1;
Statement stat = conn.createStatement();

rc1 = stat.executeQuery("SELECT COUNT(*) AS rowcount1 
   FROM Signal WHERE SignalId = 1;");

if (rc1.next())
        rowCount1 = rc1.getInt("rowcount1");

Затем я получаю следующую ошибку:

java.sql.SQLException: такого столбца нет: 'rowcount1'
в org.sqlite.RS.findColumn (RS.java:116)
в org.sqlite.RS.getInt (RS.java:219)

Очевидно, проблема в том, что при попытке назначить переменную, которая идет после AS.Я не могу найти много информации по запросам, содержащим AS.Я получаю ту же ошибку с запросами, на которые я не рассчитываю.Например, если у меня есть следующий код:

ResultSet rp1 = null;
int rowCount1 = 0;
Statement stat = conn.createStatement();

rp1 = stat.executeQuery("SELECT Signal AS Sig1 
  FROM Observations WHERE SignalId = 1;");

if (rp1.next())
       rowCount1 = rp1.getInt("rowcount1");

Я получаю ту же ошибку с предыдущим кодом (такого столбца нет: rowCount1).Что я делаю не так?Я проверяю, что таблица, которую я читаю, содержит правильные значения, поэтому запрос должен быть истинным.

Ответы [ 2 ]

8 голосов
/ 26 апреля 2011

Просто используйте rp1.getInt(1) - это возвращает первый столбец из набора результатов как целое число - то, что вы хотите.

Если у вас есть больше значений, используйте rp1.getInt(2), чтобы получить второе значение и т. Д. *

0 голосов
/ 26 апреля 2011

Во втором примере есть ошибка:

rp1 = stat.executeQuery("SELECT Signal AS Sig1 
  FROM Observations WHERE SignalId = 1;");
...
   rowCount1 = rp1.getInt("rowcount1")

всегда завершится ошибкой, поскольку в вашем запросе нет столбца rowcount1.

...