我遇到了java.sql.ResultSet的问题,我有一个java.sql.PreparedStatement,当我尝试从查询中获取结果时,我运行executeQuery()以返回ResultSet抛出异常:
异常:java.sql.SQLException消息:之后不允许操作 ResultSet已关闭。
从在线搜索看起来,结果集最终会因为某些原因而被关闭:
我检查了我的代码而没有做任何事情。下面是导致问题的代码片段:
PreparedStatement psAccountPartyIdByEmail = null;
....
try {
String [] nextLine;
while ((nextLine = reader.readNext()) != null) {
String email = nextLine[0];
.....
try {
if (psAccountPartyIdByEmail == null) {
psAccountPartyIdByEmail = session.connection().prepareStatement(SQL_GET_ACCOUNTPARTYID_BY_EMAILADDRESS);
}
psAccountPartyIdByEmail.setString(1, email);
ResultSet partyIds = psAccountPartyIdByEmail.executeQuery();
while (partyIds.next()) {
String partyId = partyIds.getString(1);
.....
}
} catch (SQLException e) {
Debug.logError(e, "Encountered SQLException while running group service.", MODULE);
}
}
} catch (IOException e) {
Debug.logError(e, "Problem reading line in file", MODULE);
}
尝试执行时抛出异常:while (partyIds.next()) {
就像我说的那样,我从不关闭连接或语句,因为你可以看到我在尝试查看结果之前没有重用该语句。
感谢他的帮助......
马克
答案 0 :(得分:0)
我不知道这是否能解决这个问题,但你可以/应该移动
if (psAccountPartyIdByEmail == null) {
psAccountPartyIdByEmail = session.connection().prepareStatement(SQL_GET_ACCOUNTPARTYID_BY_EMAILADDRESS);
}
在while循环之外。 此外,在处理完行后关闭ResultSet。 然后,当你完成所有关闭你的陈述和连接。