在与SQL Server JDBC转到最后一行从结果集(Go to last row from re

2019-06-24 14:27发布

我试图从我的表中选择,只能选择最后一排。 我已经试过这样:

rset = s.executeQuery("select noorder from orders");
rset.last();
String noorder = rset.getString("noorder");`

RSET是结果集,s是语句。 但它抛出一个异常:ResultSet中只可向前direction`访问

我已经试过这:

if (rset != null) {                
   while(rset.next()){
       rset.last();
   }
}

难道我做错了吗? 任何的想法? 谢谢

编辑:这就是答案,通过@ Bhavik - 安巴尼(感谢他)的建议。 这是我的代码:

        Statement s2 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
        rset = s2.executeQuery("select noorder from orders");
        rset.afterLast();
        GETLASTINSERTED:
        while(rset.previous()){
            noorder = rset.getString("noorder");
            break GETLASTINSERTED;//to read only the last row
        }

希望这将是帮助其他人。 Java的石头!

Answer 1:

默认的ResultSet对象不可更新,并具有只向前移动的光标。 因此,你可以遍历它只有一次,只从第一行到最后一行。

在代码级别,你可以做以下的事情

Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet resultSet = statement.executeQuery("select noorder from orders");
resultSet.afterLast();
while (resultSet.previous()) {
  String productCode = resultSet.getString("col_one");
  String productName = resultSet.getString("col_two");

}
connection.close();


Answer 2:

请记住,申请的order by条款,否则在你的最后一个条目ResultSet可能不是你所期望的。



Answer 3:

isLast()应该是你在找什么。

ResultSet rs = stmt.executeQuery(query);

while(rs.next()) {
  if(rs.isLast()) {
      // is last row in ResultSet
  }
}


Answer 4:

rset = s.executeQuery("SELECT * FROM table_name ORDER BY unique_column DESC LIMIT 1");

String noorder = rset.getString("noorder");`


文章来源: Go to last row from result set in jdbc with sql server