我正在尝试执行以下代码。正在成功建立连接。
String selectq = "select max(id) as max_id from items";
currentCon = (Connection) ConnectionManager.getConnection();
stmt=(Statement) currentCon.createStatement();
ResultSet rSelect = stmt.executeQuery(selectq);
执行以下命令时,即使表中没有行,输出也会变为1。
rSelect.next();
System.out.println(rSelect.getRow());
我的要求是检查表中是否没有记录,否则我需要从该表中获取最大id列。
我尝试过很多像
这样的事情rSelect.last();
rSelect.next();
但是,我无法获得所需的结果。
我正在使用
答案 0 :(得分:3)
你不应该忽视ResultSet#next()
的结果。如果没有行,则返回false
。另外,要将第一列作为int
获取,您应该使用ResultSet#getInt()
,传递列索引或列标签。
if (resultSet.next()) {
int max = resultSet.getInt("max_id");
} else {
// There are no records. Set max to -1 or something?
}
答案 1 :(得分:1)
您必须使用rSelect.getInt(1)
代替rSelect.getRow()
。
答案 2 :(得分:1)
像这样使用ResultSet:
while (resultSet.next()) {
//do something with this row, e.g:
int id = resultSet.getInt(1);
//...
}
while循环将遍历所有行。
答案 3 :(得分:0)
在添加如下所示的If语句后,它起作用了:
String id = "";
if(rSelect.next()){
id = rSelect.getString(1);
}
因为,根据我的查询,只能存在一行或没有。