从h2数据库中遇到这个错误,到目前为止,它工作正常。我知道连接是关闭的,如何防止这种情况发生。
org.h2.jdbc.JdbcSQLNonTransientException:对象已关闭[90007-2000]
ResultSet rest = st.executeQuery("SELECT * FROM monthly_summary WHERE id=(SELECT MAX(id) FROM monthly_summary);");
rest.next();
if(rest.getInt(3) == month && rset.getInt(4) == year) {
double oldAmount = rest.getDouble(2);
st.execute("UPDATE monthly_summary SET amount =" + (oldAmount + amount) + ";");
} else {
st.execute("INSERT INTO monthly_summary(amount, `month`, `year`) VALUES (" + amount + "," + month + "," + year + ");");
}
ResultSet::next
需要在if
语句中:
ResultSet rest = st.executeQuery("SELECT * FROM monthly_summary WHERE id=(SELECT MAX(id) FROM monthly_summary);");
if (rest.next()) {
if(rest.getInt(3) == month && rset.getInt(4) == year) {
double oldAmount = rest.getDouble(2);
st.execute("UPDATE monthly_summary SET amount =" + (oldAmount + amount) + ";");
} else {
st.execute("INSERT INTO monthly_summary(amount, `month`, `year`) VALUES (" + amount + "," + month + "," + year + ");");
}
}
消息的异常
org.h2.jdbc.JdbcSQLNonTransientException:对象已关闭[90007-2000]
(或此处为德语版本:org.h2.jdbc.JdbcSQLNonTransientException: Das Objekt wurde bereits geschlossen
、The object is already closed [90007-200]
(
如果您尝试使用已关闭的Connection
,则会发生这种情况"关闭";可以通过调用CCD_ 6显式地发生,并且可以隐式地发生在CCD_。
您可以使用以下命令检查您的Connection
是否已关闭:connection.isClosed()
。