我有以下代码:
String query_NoHotels = "SELECT max(id) FROM hotels" ;
ResultSet res = stmnt.executeQuery(query_NoHotels);
logger.info("The result set size is "+res.getFetchSize());
int noHotels = res.getInt(1);
但是,ResultSet
总是返回空..我已经在数据库上测试了这个查询,它应该返回5
。
当结果只是一个项目(整数)时,这是存储结果的正确方法吗?
感谢您的帮助。
答案 0 :(得分:1)
ResultSet
有一个光标。光标最初将位于第一行之前(请参阅:http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html)。
您必须调用first()
方法将光标移动到第一行:
ResultSet res = stmnt.executeQuery(query_NoHotels);
logger.info("The result set size is "+res.getFetchSize());
res.first();
int noHotels = res.getInt(1);
或者,您可以使用next()
方法在while
循环中迭代结果集。
答案 1 :(得分:1)
请以这种方式编写代码
String query_NoHotels = "SELECT max(id) FROM hotels" ;
ResultSet res = stmnt.executeQuery(query_NoHotels);
if(rs.next()){
logger.info("The result set size is "+res.getFetchSize());
int noHotels = res.getInt(1);
}
最初结果光标位于第一行之前。所以我们需要将光标移动到rs.next()/rs.first()
的第一个记录。