5

テーブルから選択しようとしましたが、最後の行のみを選択します。私はこれを試しました:

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

rset は結果セット、s はステートメントです。ただし、例外がスローされます: ResultSet は順方向でのみアクセスできます`

私はこれを試しました:

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

私は間違っていますか?何か案が?ありがとう

編集:@ Bhavik-Ambaniが示唆するように、これが答えです(彼に感謝します)。そして、これは私のコードです:

        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
        }

それが別の助けになることを願っています。ジャバ岩!

4

5 に答える 5

5

デフォルトのResultSetオブジェクトは更新可能ではなく、前方にのみ移動するカーソルがあります。したがって、最初の行から最後の行まで1回だけ繰り返すことができます。

コードレベルでは、次のことができます

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();
于 2012-05-18T20:15:40.917 に答える
1

句を適用することを忘れないorder byでください。そうしないと、最後のエントリResultSetが期待どおりにならない場合があります。

于 2012-05-18T22:47:06.257 に答える
0
rset = s.executeQuery("SELECT * FROM table_name ORDER BY unique_column DESC LIMIT 1");

String noorder = rset.getString("noorder");`
于 2012-05-18T20:29:52.040 に答える