1

我想在最后打印我的行数,但它显示 1!

    public void showRecords() {
    try {
        Statement st1 = con.createStatement();
        ResultSet result1 = st1.executeQuery("select * from mytable");
        while (result1.next()) {
            System.out.println(result1.getString(1) + " " + result1.getString(2));
        }

        ResultSet rs1 = st1.executeQuery("select count(*) from mytable");
        int rows = rs1.last() ? rs1.getRow() : 0;
        System.out.println("Number of rows is: "+ rows);  //print 1

    } catch (SQLException sqle) {
        System.out.println("Can not excute sql statement");
        sqle.printStackTrace();
    }
}

输出:...行数为:1

4

4 回答 4

2

输出:...行数为:1

这是绝对正确的,因为计数查询的输出如下

select count(*) from mytable

将仅包含包含总行数的单行。现在要检索该计数,您应该Resultset像往常一样使用 的 getter 方法。

int rows = rs1.getInt(1);

以您想要的方式检索计数;对您的第一个查询使用相同的方法

ResultSet result1 = st1.executeQuery("select * from mytable");
int rows = result1.last() ? result1.getRow() : 0;
System.out.println("Number of rows is: "+ rows);  // should print the count
于 2013-07-06T15:14:31.853 回答
1

从 a 中选择计数RecoredSet始终返回 的值1,即包含查询结果的记录。你要

ResultSet rs1 = st1.executeQuery("select count(*) from mytable");
if (rs1.next()) {
   int rows = rs1.getInt("COUNT")
}
于 2013-07-06T15:12:08.917 回答
1

您必须从 rowcount 查询中读取值,因为它是普通查询。喜欢

rows = rs1.getInt(1);
于 2013-07-06T15:12:18.387 回答
1

count(*) 没有列名(或只有您可能不知道的“生成”列名)。因此,您需要按列索引获取值。

此外,您需要在 ResultSet 上调用 next() 才能获得该值:

ResultSet rs1 = st1.executeQuery("select count(*) from mytable");
int rows = 0;
if (rs1.next() {
  rows = rs1.getInt(1);
}
System.out.println("Number of rows is: "+ rows);  //print 1
于 2013-07-06T15:14:55.417 回答