Re: Problem in release connection

2007-03-21 Thread Bernt M. Johnsen
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

2007-03-21 Thread Bryan Pendleton
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