JDBC显示行数

时间:2013-07-06 15:09:02

标签: java jdbc

我想在最后打印我的行数,但它显示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 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

ResultSet rs1 = st1.executeQuery("select count(*) from mytable");
if (rs1.next()) {
   int rows = rs1.getInt("COUNT")
}

答案 2 :(得分:1)

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

rows = rs1.getInt(1);

答案 3 :(得分: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