1

データベースから一連のレコードを取得し、rs.next() を実行してから、この結果を変数に割り当てて、このレコードを使用するメソッドに渡します。これは、割り当てを行わない場合と同じ方法です。変数に渡してメソッドに渡す方法はありますか? JAVA(1.5)を使用しています


すべての答えをありがとう

結果セット全体をメソッドに渡したくありません。現在の行のみを渡しますが、私が理解しているように、これを行うことはできません

4

4 に答える 4

1

いいえ、それはそのままではサポートされていませんが、次のアイデアが役立つかもしれません。

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など)で機能するとは限らないことです。

于 2008-12-29T11:55:25.877 に答える
0

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. 
}

私はあなたの質問を正しく理解しましたか?

于 2008-12-29T11:24:06.533 に答える
0

私は今あなたを理解したと思います。:)

いいえ、そのようにすることはできません。はResultSet、呼び出しごとに内部状態を変更するResultSet.next()ため、参照を保存してもどこにもアクセスできません。必要なデータをカスタムオブジェクトに抽出して保存する必要があります。

CustomData cd = new CustomData();
cd.setString1(rs.getString(1));
cd.setInt1(rs.getInt(2));
...

cd次に、変数を保存して、の処理に取り掛かることができますResultSet

于 2008-12-29T11:26:20.413 に答える
-1

結果セットを操作するときに、リスト>データ構造が非常に役立つことがよくあります。

于 2008-12-29T12:42:34.473 に答える