如何使用ResultSet获取mysql数据库中的记录数?

时间:2013-01-14 12:29:08

标签: java mysql jdbc

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

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

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

我正在使用

  • Eclipse Indigo 3.7
  • JDK 1.6.0_37
  • Tomcat 7
  • MySQL的

4 个答案:

答案 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);
}

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