レコードが10個あり、4番目のResultSet Valueにあるとします。 5番目のResultSetの値を1つ取って4番目のResultSetに戻す必要があるという状況が発生します。それはJavaで可能ですか?
"スクロール可能な" ResulSet
インスタンスは、結果セットをスクロールするために必要です。以前の結果セットを更新する必要がある場合は、スクロール可能で更新可能な結果セットが必要です(最後の段落では更新可能な結果セットについて説明しています)。通常、ResultSet
はTYPE_FORWARD_ONLY
であり、next()
方法を使用して順方向にのみスクロールすることができます。
あなたは前後にResultSet
を移動するためのabsolute()
とprevious()
のような他の方法を呼び出すタイプTYPE_SCROLL_INSENSITIVE
またはTYPE_SCROLL_SENSITIVE
のResultSet
インスタンスを作成する必要があります。スクロール可能ResultSet
を作成
は、デフォルトのタイプは、先に述べたようTYPE_FORWARD_ONLY
あるとして、Statement
またはPreparedStatement
オブジェクトによって返さResultSet
のタイプを指定する必要があります。そうする方法を示すスニペットを以下に示します。
PreparedStatement pStmt = Connection.prepareStatement(query, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = pStmt.executeQuery();
...
// You can now invoke rs.previous(), rs.absolute(n) etc. to move back and forth.
あなたはどのようにConnection.createStatement
、Connection.prepareStatement
とConnection.prepareCall
方法で特定のResultSetのタイプをする上に読んでもらいたいです。
ResultSet
の内容を変更し、それを読み込むだけではなく、「更新可能な」ResultSetを作成する必要があります。これは、ResultSet並行処理タイプをCONCUR_UPDATABLE
と指定することで簡単に実行できます。その後、updateXXX
メソッドのいずれかを呼び出し、updateRow
メソッドを使用してそれらのメソッドに従い、基になるデータソースを更新できます。
いいえ、残念ながらそれはありません。あなたは2つのパスでデータを処理する必要があります:すべてを最初のリストに書き出し、2番目のエントリを処理します。 – blubb
ResultSetを配列に変換して自由に使うことができます – marioosh
@Simon、@marioosh、なぜ 'resultSet.previous'? – Nivas