私は、Mapオブジェクト(HashMapなど)に追加することで、テーブルから取得したデータを処理する方法を持っています。しかし、ResultSetオブジェクト(dbResultset)データを再印刷しようとしているときにMapオブジェクトに追加された後は、データは印刷されません。だから私の疑問は、私のコードは、Mapオブジェクトに一度追加されると、ResultSetオブジェクトに何もデータが存在しないということですか?他のメソッドでResultSetオブジェクトを再利用することはできませんか?MapオブジェクトにResultSetオブジェクトが追加されても、ResultSetオブジェクトには一度データがありませんか?
public class DBConnection {
Map<String, String> authentication=new HashMap<String, String>();
public Map<String,String> processResultset() {
try {
// Retrieving the types and properties of columns from ResultSet object
ResultSetMetaData dbMetadata = dbResultset.getMetaData();
int columnCount=dbMetadata.getColumnCount();
System.out.println("col count:"+columnCount);
if(!dbResultset.isBeforeFirst()){
System.out.println("No Records Found");
}
else{
while(dbResultset.next()){
authentication.put(dbResultset.getString(1), dbResultset.getString(2));
}
System.out.println(authentication);
if(dbResultset.isAfterLast())
System.out.println(" no data exists");
}
} catch (Exception e) {
// TODO: handle exception
}
finally{
return authentication;
}
}
}
出力:
col count:2
hi{203=UK, 204=Netherlands, 200=Germany, 201=Romania, 104=Japan, 103=USA, 101=Russia, 100=India}
no data exists
あなたの問題は何ですか?結果セットのすべての内容を '認証'マップに追加した後、結果セット自体が消費されます。イテレータのようなもので、完全に消費された後は再利用できません。 –
'dbResultset'はどこで宣言され、初期化されていますか? JDBCオブジェクト(ステートメント、結果セット)は、リソースを漏らさないように最小限のスコープを持つ必要があります。したがって、 'ResultSet'を再利用することは悪い考えです。 –
カーソルは最後の入力の後にあります。どうしたの。何を正確に達成しようとしていますか? –