2009-09-13 10 views
0

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

SELECT MAX (sr_no) FROM comm_list;

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

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

Когда я выполняю вышеуказанный запрос из своей java-программы, чтобы получить максимальную. serial no, возвращенный набор результатов не содержит записей. Я не понимаю, где проблема. Я сохраняю записи из 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); 

ответ

2

Попробуйте использовать метод 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

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

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

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

0
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); 
Смежные вопросы