在for循环中使用resultset

时间:2015-09-30 10:29:03

标签: java jsp jdbc

int i = 0;
while (i < size) {
    String s = username[i];

    String sql4 = "select books1,books2 from " + uname + "a," + s + "b where " + uname + "a.books1=" + s + "b.books2";
    ResultSet rs3 = con.createStatement().executeQuery(sql4);

    System.out.println(sql4);
    while (rs3.next()) {

        count = rs3.getRow();
    }
    i++;
    System.out.println(count);

运行此代码后,输出应为2,1,0,0   但输出是2,2,2,2。这是i=0

的SQL查询

2 个答案:

答案 0 :(得分:1)

使用ResultSet.last()代替while循环。请参阅以下示例。

count = rs3.last() ? rs3.getRow() : 0;

代码的不良做法

此外,您的代码似乎很糟糕。您正在循环中执行查询,这会使您的程序性能变差。您可以使用COUNTJOIN和其他技术使用SQL查询,以更少的代码轻松高效地获取输出。

答案 1 :(得分:0)

初始化循环中的count

while (i < size) {

count=0;
//execute query
}

如果没有找到行,则使用您的代码打印先前的count值。

而不是使用while(rs3.next()),您可以使用select count(*) as cnt...并使用

if(rs3.next()){
count = rs3.getInt("cnt");
}