我有一種方法,通過添加到Map對象(即HashMap)來處理從表中檢索到的數據。但是,當它試圖重新打印ResultSet對象(dbResultset)數據時,它已被添加到Map對象中,但沒有數據被打印。所以我的疑問是,我的代碼是否有一些操作(或),一旦將它添加到Map對象中,ResultSet對象中就不會有任何數據?我無法在其他方法中重複使用ResultSet對象嗎?ResultSet對象在添加到Map對象後沒有任何數據嗎?
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是一個壞主意。 –
您的光標在您最後一次輸入之後。有什麼問題。你想要達到什麼目的? –