Невозможно получить ResultSet из базы данных MySql - PullRequest
0 голосов
/ 13 сентября 2009

Когда я выполняю следующий запрос к базе данных, содержащей таблицу «comm_list» и поле «sr_no» типа «Int» в таблице «comm_list», я получаю правильный набор результатов

SELECT MAX (sr_no) FROM comm_list;

Приведенный выше запрос предназначен для получения макс. серийный номер. чтобы при вводе новой записи я вводил (серийный номер + 1) в столбце «sr_no», чтобы я мог отслеживать номер «нет». записей в базе данных.

Я знаю, что это можно сделать автоматически, сделав первичным ключом поля "sr_no" и сделав его автоматическим инкриминированием при вводе новой записи, но у меня уже есть другой первичный ключ в таблице, поэтому я не могу этого сделать " sr_no "поле в качестве первичного ключа.

Когда я выполняю вышеуказанный запрос из моей Java-программы, чтобы получить макс. серийный номер, возвращенный набор результатов не содержит записей. Я не понимаю, где проблема. Я храню записи из java-программы в базе данных с помощью драйвера jdbc.

Ниже приведен фрагмент кода моей Java-программы.

          PreparedStatement getSerial = con.prepareStatement("select max(sr_no) from comm_list"); // "con" is the connection with the database
          getSerial.execute();
          ResultSet rs = getSerial.getResultSet();
          System.out.println(rs.toString()); 
          System.out.println(rs.getFetchSize()); // output - 0
          srNo = rs.getInt(1) + 1;
          System.out.println(srNo);

Ответы [ 3 ]

2 голосов
/ 13 сентября 2009

Попробуйте использовать метод next , чтобы переместить указанный набор результатов в следующую строку и узнать, есть ли в следующей строке:

PreparedStatement getSerial = con.prepareStatement("select max(sr_no) from comm_list"); // "con" is the connection with the database
getSerial.execute();
ResultSet rs = getSerial.getResultSet();
if(rs.next()) {
   srNo = rs.getInt(1) + 1;
}
System.out.println(srNo);
2 голосов
/ 13 сентября 2009

ResultSets должен быть повторен для использования. Это упоминается в javadocs . Javadocs всегда являются бесценным справочным материалом для этих API.

Вам необходимо вызвать метод next () ResultSet, чтобы получить первый результат.

Есть несколько примеров для начала работы здесь .

0 голосов
/ 13 сентября 2009
Statement getSerial = con.createStatement();
ResultSet rs = getSerial.executeQuery("select max(sr_no) from comm_list");
if(rs.next()){
  srNo = rs.getInt(1) + 1;

System.out.println(srNo);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...