无法从 MySql 数据库中获取 ResultSet

Posted

技术标签:

【中文标题】无法从 MySql 数据库中获取 ResultSet【英文标题】:Unable to get ResultSet from the MySql DataBase 【发布时间】:2009-09-13 11:20:30 【问题描述】:

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

从 comm_list 中选择 MAX(sr_no);

上面的查询是为了得到最大值。序列号。这样当我输入新记录时,我会在“sr_no”栏中输入(序列号+1),以便跟踪编号。数据库中的记录。

我知道它可以通过设置字段“sr_no”主键来自动完成,并使其在输入新记录时自动递增,但我在表中已经有另一个主键,所以我不能这样做“ sr_no”字段作为主键。

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

以下是我的java程序的code-sn-p。

          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);

【问题讨论】:

【参考方案1】:

尝试使用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】:

结果集需要迭代才能使用。 javadocs 中提到了这一点。 javadocs 始终是这些 API 的宝贵参考。

需要调用ResultSet的next()方法才能得到第一个结果。

有一些入门示例here。

【讨论】:

【参考方案3】:
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);

【讨论】:

以上是关于无法从 MySql 数据库中获取 ResultSet的主要内容,如果未能解决你的问题,请参考以下文章

使用 Django 的数据表无法从 MySQL 数据库中获取数据

无法从导入的 MySQL 数据库中获取地理位置结果

添加新数据时无法从mysql数据库中获取python中的新数据

GET / POST方法无法使用json从mysql数据库获取数据到html

我似乎无法从 MySQL 获取最后插入的记录/ID

无法从codeigniter中的mysql表中获取一些特殊字符