7

I implemented derby data base in my application to save my data,and I am getting this exception in retrieval of result set form select query in Derby database. To establish the connection I use connection string as:

I establish connection using this method:

I declare this method in class Connection.java:

 public synchronized Connection createConnection() throws Exception {

        Connection rescon = null;

        try {
            if (this.dbuser == null) {
                rescon = DriverManager.getConnection(this.URI + ";create=true");
                } else {
                rescon = DriverManager.getConnection(this.URI + ";create=true",
                        this.dbuser, this.dbpass);
            }
            // new connection in connection pool created
        } catch (SQLException e) {
            final String stackNum = Utility.exceptionHandler(e);
            throw new Exception("Exception get during Connection - " + e.getMessage());
        }
        return rescon;
    }

I used this method as and create connection, create connection during intraction using string:

private Connection objConnection = null;
objConnectionpool = new Connection("jdbc:derby:" + Folder.getAbsolutePath() +        "/myapplication" + sFileName, null, null, "org.apache.derby.jdbc.EmbeddedDriver");
objConnection =  objConnectionpool.createNewConnection();

I am getting exception in execution of query:

sQuery = "select value,reason from " + TableNm + " where fileName ='" + FileName + "' AND type='"+Type+"' AND status ='remaining'"; 

during processing and interaction with Derby database we might update as well get the data from the database:

I perform setAutoCommit as false before inserting in the database

objConnection.setAutoCommit(false);

after insertion:

ps = objConnection.prepareStatement(sQuery);
rs = ps.executeQuery();
objConnection.commit();
objConnection.setAutoCommit(true);

I am getting Exception as

java.sql.SQLNonTransientConnectionException: No current connection.
    at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.Util.noCurrentConnection(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedConnection.checkIfClosed(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedConnection.setupContextStack(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
    at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown Source)
    at com.myapplication.c.aw.a(Unknown Source)
    at com.myapplication.c.aw.a(Unknown Source)
    at com.myapplication.main.avd.run(Unknown Source)
Caused by: java.sql.SQLException: No current connection.
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)
    ... 11 more
bluish
  • 26,356
  • 27
  • 122
  • 180
user609621
  • 101
  • 1
  • 1
  • 3
  • What is `Connection.createNewConnection`? I've never heard of such a method on `java.sql.Connection`, and I can't find it in any of the docs. I always use `DriverManager.getConnection` to establish my Derby database connections. – Bryan Pendleton May 30 '11 at 14:54
  • The exception indicates that you have not successfully connected. Try putting some "System.out.println" calls into your code where you are calling DriverManager.getConnection, and print out the values that you are passing to getConnection(), and print out the connection that is returned. And, if you are getting an exception from the getConnectiOn() call, print out that exception, too. – Bryan Pendleton May 31 '11 at 20:39

1 Answers1

5

Found this via Google.

I had the same problem and found my answer in this sample application: http://db.apache.org/derby/docs/10.4/devguide/rdevcsecure26537.html

// force garbage collection to unload the EmbeddedDriver
// so Derby can be restarted
System.gc();

Works perfectly now.

Whired
  • 259
  • 1
  • 11