2010-12-27 16 views
1

jdbc Resultsetに関する質問があります。質問についてjava.sql.resultset

テーブルの1つでいくつかのレコードを取得する必要があります。レコードを取得した後、IDのリストを持つResultSetのレコードを検索するにはどうすればよいですか?

最初に結果セットをハッシュマップに変換する必要がありますか?

+1

クエリ自体を検索してください。 –

+0

WHERE句を学び、機能要件を正しく理解している場合は、IN句も理解してください。 'SELECT * FROM tablename WHERE id IN(1、2、3、4、5、6、7、8、9)'。 [この回答](http://stackoverflow.com/questions/2861230/what-is-the-best-approach-using-jdbc-for-parameterizing-an-in-clause)も参照してください。こうすることで、データベース全体をJavaのメモリに複製せずに、メモリ不足のためJavaアプリケーションを強制終了することなく、Javaコードで必要な行だけを正確に処理できます。回答ramziのために – BalusC

答えて

1

SQLクエリを修正して、最初にそれらの結果を取得するだけでなく、結果をより有用なデータ構造に変換する(たとえば、各レコードのオブジェクトを作成してハッシュに格納するなど) IDでマップ)は良い方法です、はい。

0

ResultSetをDBとのインターフェイスの一種として考えると、ResultSet自体にはデータが含まれていないため、検索するものはほとんどありません。

だから、操作したり、検索したりする必要がある場合は、すべてのデータを構造体に読み込む方がよいでしょう。

ハッシュ構造はおそらく最も良いですが、データをどのように構造化したかによって異なります。あなたが特定のキャッシュ実装を使用しない限り、あなたはあなたが助けを借りて、ループを通って結果セットを横断することができますunnecesaryデータベーストラフィック

0

の多くの原因となりますので、あなたがやるべきではない

唯一のことは、ResultSetの上に複数回interateすることです"next()" [resultSet.next()]メソッドの中から選択します。

Exが......、のgetString()、のgetInt()を使用して値を取得します: RSは私の結果セットとする、

しばらく(rs.next()){

ソプラノ( "名前:" + rs.getString( "name"));S.o.p( "年齢:" + rs.getInt( "age")); }

+0

ありがとう:) –

+0

ウェルカムvyas ... –

0

私は、HashMapが動作することに同意します。レコードの数が多い場合は、ResultSetデータをどの構造にもロードしないことで、時間とメモリーを節約できます。問合せでORDER BY IDを使用すると、結果セットからデータを直接得ることができます(rs.next();)。

2

レコードを取得した後、IDのリストを含むResultSetのレコードを検索するにはどうすればよいですか?

これは間違った方法です。 ResultSetを取得する前に、SQL照会で検索とフィルター処理を行う必要があります。 >悪い習慣 - あなたはResultSet rsを持っていると仮定し

その後

は、ResultSetのON検索こう

while (rs.next()) { 
    // do whatever you want with results 
} 

を使用して、それを反復します。