Database SQLNonTransientConnectionException:与Derby数据库交互时,在我的应用程序中没有当前连接

Database SQLNonTransientConnectionException:与Derby数据库交互时,在我的应用程序中没有当前连接,database,jdbc,database-connection,derby,Database,Jdbc,Database Connection,Derby,我在应用程序中实现了derby数据库来保存我的数据,在derby数据库中检索结果集表单selectquery时出现了这个异常。 要建立连接,我将连接字符串用作: 我使用以下方法建立连接: 我在class Connection.java中声明此方法: 我将此方法用作和创建连接,在插入过程中使用字符串创建连接: private Connection objConnection = null; objConnectionpool = new Connection("jdbc:derby:" + Fol

我在应用程序中实现了derby数据库来保存我的数据,在derby数据库中检索结果集表单
select
query时出现了这个异常。 要建立连接,我将连接字符串用作:

我使用以下方法建立连接:

我在class Connection.java中声明此方法:

我将此方法用作和创建连接,在插入过程中使用字符串创建连接:

private Connection objConnection = null;
objConnectionpool = new Connection("jdbc:derby:" + Folder.getAbsolutePath() +        "/myapplication" + sFileName, null, null, "org.apache.derby.jdbc.EmbeddedDriver");
objConnection =  objConnectionpool.createNewConnection();
我在执行查询时遇到异常:

sQuery = "select value,reason from " + TableNm + " where fileName ='" + FileName + "' AND type='"+Type+"' AND status ='remaining'"; 
在处理和与Derby数据库交互的过程中,我们可能会更新并从数据库中获取数据:

在插入数据库之前,我将setAutoCommit执行为false

objConnection.setAutoCommit(false);
插入后:

ps = objConnection.prepareStatement(sQuery);
rs = ps.executeQuery();
objConnection.commit();
objConnection.setAutoCommit(true);
我也有例外

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
这是通过谷歌找到的

我也遇到了同样的问题,并在这个示例应用程序中找到了答案:


现在可以完美工作。

什么是
连接。createNewConnection
?我从未在
java.sql.Connection
上听说过这样的方法,在任何文档中都找不到。我总是使用
DriverManager.getConnection
建立我的Derby数据库连接。异常表明您尚未成功连接。尝试将一些“System.out.println”调用放入调用DriverManager.getConnection的代码中,打印出传递给getConnection()的值,并打印出返回的连接。如果您从getConnectiOn()调用中获得异常,也可以打印该异常。
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
// force garbage collection to unload the EmbeddedDriver
// so Derby can be restarted
System.gc();