0

我正在尝试执行以下代码。正在成功建立连接。

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

但是,我无法获得所需的结果。

我在用

  • 日食靛蓝 3.7
  • JDK 1.6.0_37
  • 雄猫 7
  • MySQL
4

4 回答 4

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?
}
于 2013-01-14T12:35:52.787 回答
1

您必须使用rSelect.getInt(1)而不是rSelect.getRow().

于 2013-01-14T12:32:31.127 回答
1

像这样使用 ResultSet:

while (resultSet.next()) {
  //do something with this row, e.g:
  int id = resultSet.getInt(1);
  //...
}

while 循环将遍历所有行。

于 2013-01-14T12:38:35.353 回答
0

它在添加如下 If 语句后起作用:

String id = "";


if(rSelect.next()){
    id = rSelect.getString(1);
}

因为,根据我的查询,只能存在一行或不存在。

于 2013-01-14T12:53:49.310 回答