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