gpt4 book ai didi

java - ResultSet 关闭后不允许进行 ResultSet、空指针异常和 SQLException 操作

转载 作者:行者123 更新时间:2023-12-02 07:20:42 25 4
gpt4 key购买 nike

我是 java 和 SQL 新手,我重复了一个我不知道如何避免的问题:

假设我想创建两个executeQuery,一个在另一个内部,在getRequestsFromDB方法中我创建第一个executeQuery,在第二个方法isProfessionalHasThatProfession中我创建第二个executeQuery:

 private Vector<ClientRequest> getRequestsFromDB() throws SQLException {
Vector<ClientRequest> retVal = new Vector<ClientRequest>();
ResultSet result = null;
try {
for (int i=0 ; i<_userBean.getProfession().length ; ++i ){
result = _statement.executeQuery("SELECT * FROM "+_dbName+"."+CLIENTS_REQUEST_TABLE+" WHERE "+CLIENTS_REQUEST_T_PROFESSION+"='"+_userBean.getProfession()[i]+"'");
while(result.next()){ //HERE IN THE SECOND LOOP GETTING NULL EXCEPTION

if(isProfessionalHasThatProfession(result.getString(CLIENTS_REQUEST_T_PROFESSION))){
retVal.add(cr);
ClientRequest cr = new ClientRequest
(result.getString(CLIENTS_REQUEST_T_CLIENT_ID),
result.getString(CLIENTS_REQUEST_T_CITY),
result.getString(CLIENTS_REQUEST_T_DATE),
result.getString(CLIENTS_REQUEST_T_PROFESSION));
}
}
}
} catch (SQLException ex) {
throw ex;
}
return retVal;
}

第二个函数:

private boolean isProfessionalHasThatProfession(String profession) throws SQLException {             
ResultSet result = null;
try {
result = _statement.executeQuery("SELECT "+WORKER_PROFESSIONS_T_PROFESSION+" FROM "+_dbName+"."+WORKER_PROFESSIONS_TABLE+" WHERE "+WORKER_PROFESSIONS_T_PROFESSIONAL_ID+"='"+_userBean.getProId()+"'");
while(result.next()){
if(result.getString(1).equals(profession)){
return true;
}
}
} catch (SQLException ex) {
throw ex;
}
return false;
}

在第二个循环中,我收到 SQLException:“ResultSet 关闭后不允许操作”,我尝试过:最后用 result.close() 关闭结果,但我也得到了空指针异常。

我真的不知道如何处理这个问题,有什么想法吗?谢谢!

最佳答案

您正在重用_statement(我认为这是全局的?)来获取2个不同的ResultSet,但随后您返回到第一个ResultSet (在外部函数中)在获得第二个(在内部函数内部,自动关闭第一个)之后 - 尝试使用 2 个单独的语句

关于java - ResultSet 关闭后不允许进行 ResultSet、空指针异常和 SQLException 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14285086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com