Problem in release connection
Hi, I am using Cloudscape(IBM Cloudscape Version 10.1) and derbyclient.jar provided by derby. Following are the code I am using for clean the database connection and also PreparedStatement. public void cleanup(Connection aoConnection, PreparedStatement aoPreparedStatement) { try{ if(!(aoConnection ==null || aoConnection.isClosed())) aoConnection.close();//Release Connection if(aoPreparedStatement != null) aoPreparedStatement.close(); }catch(SQLException aoSQLException){ aoSQLException.printStackTrace(); } } But some time this method call get hang. Can any one tell me why it is happening? I have one more problem with this database. I am updating a table using following code. //Table create script CREATE TABLE TABLE_MEMORY ( MEMORY_ID BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY, MEMORY SMALLINT, PRIMARY KEY (MEMORY_ID) ); //JAVA Code Connection aoConnection = getConnection(); PreparedStatement psUpdate = aoConnection.prepareStatement(UPDATE TABLE_MEMORY SET MEMORY=? WHERE MEMORY_ID=?); psUpdate.setInt(counter++, 38650); psUpdate.setInt(counter++, 15254); int updated = psUpdate.executeUpdate(); If I run above code, executeUpdate method does not throw any exception and always returns value 1. But, due to size of value I am setting (38650) is more than size of smallint, so it does not update database. Can any one tell me why value return by executeUpdate method is 1 even database update is failed? For any reply thanks in advance. Thanks Regards Shambhu Kumar Sinha
Re: Problem in release connection
Hi, Maybe it would help to close the prepared statement befor you close the connection, which also would be the natural way of cleaning up. Bernt Shambhu wrote (2007-03-21 18:55:29): Hi, I am using Cloudscape(IBM Cloudscape Version 10.1) and derbyclient.jar provided by derby. Following are the code I am using for clean the database connection and also PreparedStatement. public void cleanup(Connection aoConnection, PreparedStatement aoPreparedStatement) { try{ if(!(aoConnection ==null || aoConnection.isClosed())) aoConnection.close();//Release Connection if(aoPreparedStatement != null) aoPreparedStatement.close(); }catch(SQLException aoSQLException){ aoSQLException.printStackTrace(); } } But some time this method call get hang. Can any one tell me why it is happening? I have one more problem with this database. I am updating a table using following code. //Table create script CREATE TABLE TABLE_MEMORY ( MEMORY_ID BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY, MEMORY SMALLINT, PRIMARY KEY (MEMORY_ID) ); //JAVA Code Connection aoConnection = getConnection(); PreparedStatement psUpdate = aoConnection.prepareStatement(UPDATE TABLE_MEMORY SET MEMORY=? WHERE MEMORY_ID=?); psUpdate.setInt(counter++, 38650); psUpdate.setInt(counter++, 15254); int updated = psUpdate.executeUpdate(); If I run above code, executeUpdate method does not throw any exception and always returns value 1. But, due to size of value I am setting (38650) is more than size of smallint, so it does not update database. Can any one tell me why value return by executeUpdate method is 1 even database update is failed? For any reply thanks in advance. Thanks Regards Shambhu Kumar Sinha -- Bernt Marius Johnsen, Database Technology Group, Staff Engineer, Technical Lead Derby/Java DB Sun Microsystems, Trondheim, Norway signature.asc Description: Digital signature
Re: Problem in release connection
provided by derby. Following are the code I am using for clean the database connection and also PreparedStatement. if(!(aoConnection ==null || aoConnection.isClosed())) aoConnection.close();//Release Connection if(aoPreparedStatement != null) aoPreparedStatement.close(); I think it would be better to close the statement before you close the connection. I also tend not to bother with calling isClosed methods. Instead I set the variable to null after I close the connection. I think that might also help the garbage collector find more garbage to collect. So I'd write something more like: if (aoPreparedStatement != null) { aoPreparedStatement.close(); aoPreparedStatement = null; } if (aoConnection != null) { aoConnection.close(); aoConnection = null; } thanks, bryan