无法从MySql DataBase获取ResultSet

时间:2009-09-13 11:20:30

标签: java mysql jdbc

当我在表“comm_list”中对包含表“comm_list”和类型为“Int”的字段“sr_no”的数据库执行以下查询时,我得到了正确的结果集

SELECT MAX(sr_no)FROM comm_list;

以上查询是获取最大值。序列号。因此,当我输入新记录时,我在“sr_no”coloum中输入(序列号+ 1),以便我可以跟踪号码。数据库中的记录。

我知道它可以通过创建字段“sr_no”主键自动完成,并且只要输入新记录就使其自动进行自动递送但我已经在表中有另一个主键,所以我不能这样做“ sr_no“字段作为主键。

当我从我的java程序执行上述查询以获得最大值时。序列号,返回的结果集不包含任何条目。我不明白问题出在哪里。我使用jdbc驱动程序将java程序中的记录存储到数据库中。

以下是我的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 个答案:

答案 0 :(得分:2)

需要迭代使用ResultSet。这在javadocs中提到。 javadocs始终是这些API的宝贵参考。

您需要调用ResultSet的next()方法来获取第一个结果。

有一些入门示例here

答案 1 :(得分: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 :(得分: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);