【发布时间】:2011-09-04 14:25:51
【问题描述】:
我在我的应用程序中实现了 derby 数据库来保存我的数据,并且在 Derby 数据库中检索结果集表单 select 查询时遇到此异常。
要建立连接,我使用连接字符串:
我使用这种方法建立连接:
我在类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;
}
我使用这个方法作为并创建连接,在插入期间使用字符串创建连接:
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
【问题讨论】:
-
什么是
Connection.createNewConnection?我在java.sql.Connection上从未听说过这种方法,而且我在任何文档中都找不到它。我总是使用DriverManager.getConnection来建立我的 Derby 数据库连接。 -
异常说明你没有连接成功。尝试将一些“System.out.println”调用放入您调用 DriverManager.getConnection 的代码中,并打印出您传递给 getConnection() 的值,并打印出返回的连接。而且,如果您从 getConnectiOn() 调用中得到异常,也打印出该异常。
标签: database jdbc database-connection derby