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导致连接关闭?