我收到了ORA-01000 SQL异常.所以我有一些与之相关的问题.
在循环中执行预准备语句会导致此问题吗?(当然,我本可以使用sqlBatch)注意:一旦循环结束,pStmt就会关闭.
{ //method try starts
String sql = "INSERT into TblName (col1, col2) VALUES(?, ?)";
pStmt = obj.getConnection().prepareStatement(sql);
pStmt.setLong(1, subscriberID);
for (String language : additionalLangs) {
pStmt.setInt(2, Integer.parseInt(language));
pStmt.execute();
}
} //method/try ends
{ //finally starts
pStmt.close()
} //finally ends
Run Code Online (Sandbox Code Playgroud)如果在单个连接对象上多次调用conn.createStatement()和conn.prepareStatement(sql)会发生什么?
Edit1: 6.使用Weak/Soft引用语句对象是否有助于防止泄漏?
Edit2: 1.有什么办法,我可以在项目中找到所有缺少的"statement.close()"吗?我知道这不是内存泄漏.但我需要找一个符合垃圾收集条件的语句引用(不执行close())?有什么工具可用?或者我必须手动分析它?
请帮我理解.
转到ORALCE机器并以sysdba启动sqlplus.
[oracle@db01 ~]$ sqlplus / as sysdba
Run Code Online (Sandbox Code Playgroud)
然后跑
SELECT A.VALUE,
S.USERNAME,
S.SID,
S.SERIAL#
FROM V$SESSTAT A,
V$STATNAME B,
V$SESSION S
WHERE A.STATISTIC# = B.STATISTIC#
AND …Run Code Online (Sandbox Code Playgroud)