データベースから一連のレコードを取得し、rs.next() を実行してから、この結果を変数に割り当てて、このレコードを使用するメソッドに渡します。これは、割り当てを行わない場合と同じ方法です。変数に渡してメソッドに渡す方法はありますか? JAVA(1.5)を使用しています
すべての答えをありがとう
結果セット全体をメソッドに渡したくありません。現在の行のみを渡しますが、私が理解しているように、これを行うことはできません
いいえ、それはそのままではサポートされていませんが、次のアイデアが役立つかもしれません。
ResultSetMetaData meta = rs.getMetaData();
while (rs.next()) {
Map<String,Object> row = new HashMap<String,Object>();
for (int i = 1; i <= meta.getColumnCount(); ++i) {
row.put(meta.getColumnName(i), rs.getObject(i));
}
processRow(row);
}
問題は、row
-mapから値をキャストする必要がありprocessRow()
、すべてのタイプ/ドライバーの組み合わせ(BLOBなど)で機能するとは限らないことです。
rs.next()の結果を変数に割り当てたいですか?
恐れ入りますが、それはできません。そのrsからの参照を取得し、他の方法で処理することができます(varに割り当てない場合と同じ方法で)
rsを引数としてメソッドに渡すと、それはまさにあなたがすでに行っていることです。
while( rs.next() ) {
list.add( createFrom( rs ) );
}
...
public Object createFrom( ResultSet rs ) { // Here rs is a copy of the reference in the while above.
}
私はあなたの質問を正しく理解しましたか?
私は今あなたを理解したと思います。:)
いいえ、そのようにすることはできません。はResultSet
、呼び出しごとに内部状態を変更するResultSet.next()
ため、参照を保存してもどこにもアクセスできません。必要なデータをカスタムオブジェクトに抽出して保存する必要があります。
CustomData cd = new CustomData();
cd.setString1(rs.getString(1));
cd.setInt1(rs.getInt(2));
...
cd
次に、変数を保存して、の処理に取り掛かることができますResultSet
。
結果セットを操作するときに、リスト>データ構造が非常に役立つことがよくあります。