Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 控制Oracle游标_Java_Oracle - Fatal编程技术网

Java 控制Oracle游标

Java 控制Oracle游标,java,oracle,Java,Oracle,问题:在达到最大值之前,游标的数量一直在增加。 第一个连接被创建此连接从未关闭过() Class.forName("oracle.jdbc.driver.OracleDriver"); con = DriverManager.getConnection(url, schema, password); con.setAutoCommit(true); con.setHoldability(ResultSet.CLOSE_CURSORS_AT_COMMIT); 使用相同的连接,客户端可以 pub

问题:在达到最大值之前,游标的数量一直在增加。

第一个连接被创建此连接从未关闭过()

Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection(url, schema, password);

con.setAutoCommit(true);
con.setHoldability(ResultSet.CLOSE_CURSORS_AT_COMMIT);
使用相同的连接,客户端可以

public ResultSet runSelect(final StringBuilder query) {

    Statement stmt = null;
    ResultSet rs = null;

    try {
        stmt = con.createStatement();
        rs = stmt.executeQuery(query.toString());
    } catch (SQLException e) {
        logger.error("Failed to execute database query (select):" + query, e);
    }

    return rs;
}
收到结果后,客户端
close()
将其与一条语句一起显示

        if (rs != null) {
            try {
                rs.close();
                ...
这里有什么东西会导致游标数量增加吗

我想可能是我错过了关闭stmt,应该

        if (rs != null) {
            try {
                Statement stmt = rs.getStatement();

                stmt.close();
                rs.close();
                ...
此外,在结果集关闭的顺序上。。是否可以在关闭结果集之前关闭语句?

不幸的是,我要到明天才能确认。你觉得怎么样

关闭语句对象时,如果 一个存在,也是封闭的

因此,您应该先关闭
结果集
,然后关闭
语句
,或者只关闭
语句


另外,在
finally
块中关闭
ResultSet
和/或
语句

决不能“只关闭
语句
”。这会导致不良的编码习惯,在某些情况下是危险的。阅读。@npe您这样说是因为您在statement.close中遇到一些问题吗?对于javadoc所说的安全操作,“您永远不应该”似乎非常苛刻。是的,关闭JBoss上的包装连接通常不关闭语句/结果集。它刚刚将连接释放回池。我现在不知道它是如何工作的,它是在JBoss5.0GA上