我每隔30秒调用一次mysql Prepared语句就会出现此错误,这是被调用的代码:
public static int getUserConnectedatId(Connection conn, int i) throws SQLException {
pstmt = conn.prepareStatement("SELECT UserId from connection where ConnectionId ='" + i + "'");
ResultSet rs = pstmt.executeQuery();
int id = -1;
if (rs.next()) {
id = rs.getInt(1);
}
pstmt = null;
rs = null;
return id;
}
不确定问题是什么:s
答案 0 :(得分:7)
您需要关闭您创建的所有资源 - 预准备语句,结果集等。
答案 1 :(得分:1)
为什么不对查询进行参数化,只需更改连接ID?这就是准备使用的准备语句。这样,您只需编译一次语句,并重新使用已编译的查询计划(或您的数据库编译查询的任何内容)。
答案 2 :(得分:-2)
因为你的内存不足,因为与默认内存相比,ResultSet占用的内存更多。
解决方案:在启动应用程序时使用此参数 java或javaw -Xms 25M -Xmx 1024M