我試圖執行調用方法selectInAsending(...)的getPendingSalesOrderIDs()方法。SQLException:ResultSet關閉後不允許操作
但這顯示的SQLException說 值java.sql.SQLException:不允許操作的ResultSet關閉
這裏後db.endSelect()將關閉所有的連接。我認爲問題在於此。
public ArrayList getPendingSalesOrderIDs() {
ArrayList a = new ArrayList();
try {
//ResultSet r = znAlSalesOrder.select("sono", "");
ResultSet r = salesOrder.selectInAsending("soNo", "productionStatus = 'pending' and formatID='Zn-Al'", "soNo");
r.beforeFirst();
while (r.next()) {
a.add(r.getString(1));
}
} catch (SQLException ex) {
}
return a;
}
public ResultSet selectInAsending(String fields,String selection, String orderField)
{
db = new Database();
db.select("SELECT "+fields+" FROM "+name+" WHERE "+selection + " ORDER BY " +orderField+ " ASC");
this.rs=db.rs;
db.endSelect();
return this.rs;
}
public void select(String query)
{
if(con!=null)
{
try {
System.out.println(query);
rs = stm.executeQuery(query);
} catch (SQLException ex) {
Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
下面的答案是正確的,我建議您在連接,語句和結果集閱讀,學會開放的通用模式和關閉他們,特別是在特殊情況下(例如,當引發例外) – 2010-11-05 14:21:15