Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.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
SQL错误:java中的关闭连接_Java_Sql_Jdbc_Database Connection_Sqlexception - Fatal编程技术网

SQL错误:java中的关闭连接

SQL错误:java中的关闭连接,java,sql,jdbc,database-connection,sqlexception,Java,Sql,Jdbc,Database Connection,Sqlexception,连接正在自动关闭,即使我没有在最后一个块中关闭 public String look( long id, String codeName, Connection conn ) throws SQLException { try { StringBuffer sel = new StringBuffer().append(property); stmt = conn.prepareCall( sel.toSt

连接正在自动关闭,即使我没有在最后一个块中关闭

 public String look( long id, String codeName, Connection conn ) throws SQLException
    {
        try
        {
            StringBuffer sel = new StringBuffer().append(property);
            stmt = conn.prepareCall( sel.toString() );           /*   fileCode.java:194    */

            stmt.setString( 1, nameC );
            stmt.setLong( 2, valueI );
            stmt.registerOutParameter( 3, oracle.jdbc.OracleTypes.VARCHAR );
            stmt.execute();

            return stmt.getString( 3 );
        }
        catch ( SQLException e )
        {
            if ( e.getMessage().toUpperCase().contains( "NO DATA" ) )
            {
                return "Value not found";
            }
            throw e;
        }
        catch ( Exception e )
        {
            e.printStackTrace();

        }
        finally
        {
            System.out.println( " CONNNNNN closed ? : " + conn.isClosed() ); 
        }

    }
方法调用look方法

public class Verfication 
    {   

    public void verify ( , , , , , , ,conn )
    {
      try
      {
         if ( x ==1 )
         {
           ManageCode mCode = new ManageCode();
           System.out.println( "----- 1st Call -----" );
           String mCodeBlock = mCode.look( , , conn);
           String cCodeBlocked = checkBackup ( , , , , , , , , );
           /* connection is closed in this part */ 
           System.out.println( "----- 2nd Call -----" );
           String nCodeBlock = mCode.look ( , , conn );
         }

      }catch(    )
      {

      }

    }
}   
我确实获得了如下所述的输出,我不确定连接中出现了什么问题?我还添加了系统输出

输出:

     ----- 1st Call -----
     CONNNNNN closed ? : false

     ----- 2nd Call -----
     CONNNNNN closed ? : true

    SEVERE: Line:71 CodePointChecker ERROR: java.sql.SQLException: Closed Connection
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:227)
    at oracle.jdbc.driver.PhysicalConnection.prepareCall(PhysicalConnection.java:839)
    at oracle.jdbc.driver.PhysicalConnection.prepareCall(PhysicalConnection.java:802)
    at com.XXXXXXXXXXXXXXX.code.fileCode.look(fileCode.java:194)

您的SQL查询一定发生了某种情况,触发了SQLException,导致连接关闭。

JDBC连接关闭的原因有很多,不仅仅是您故意的。这就是为什么有这么多的连接池实现

我看到连接关闭,因为连接运行的端口已关闭。我看到连接关闭只是因为数据库感觉像它(这一次主要是Oracle)

当然,最明显的可能是你在其他地方意外地关闭了连接,也许是在另一个线程中


道德-使用适当的连接池。这会帮你省去很多痛苦。

也发布
checkBackup
方法的代码。你也可以发布你的JDBC连接字符串。哪些SQLException导致连接关闭?