SQLNonTransientConnectionException: Pas de connexion en cours, dans mon application, tout en interagissant avec une base de données Derby
J'ai mis en place derby de la base de données dans mon application pour enregistrer mes données,et je reçois cette exception dans la récupération de l'ensemble de résultats de formulaire select
requête dans la base de données Derby.
Pour établir la connexion j'ai utiliser la chaîne de connexion que:
Je établir une connexion à l'aide de cette méthode:
Je déclare cette méthode dans la classe 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;
}
J'ai utilisé cette méthode et créer une connexion, créer une connexion au cours de intraction l'aide de la chaîne:
private Connection objConnection = null;
objConnectionpool = new Connection("jdbc:derby:" + Folder.getAbsolutePath() + "/myapplication" + sFileName, null, null, "org.apache.derby.jdbc.EmbeddedDriver");
objConnection = objConnectionpool.createNewConnection();
Je suis d'exception dans l'exécution de la requête:
sQuery = "select value,reason from " + TableNm + " where fileName ='" + FileName + "' AND type='"+Type+"' AND status ='remaining'";
cours de traitement et de l'interaction avec la base de données Derby on peut mettre à jour ainsi obtenir les données de la base de données:
- Je effectuer setAutoCommit comme faux avant de l'insérer dans la base de données
objConnection.setAutoCommit(false);
après l'insertion:
ps = objConnection.prepareStatement(sQuery);
rs = ps.executeQuery();
objConnection.commit();
objConnection.setAutoCommit(true);
Je suis une Exception, comme le
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
Vous devez vous connecter pour publier un commentaire.
Trouvé via Google.
J'ai eu le même problème et trouvé ma réponse dans cet exemple d'application: http://db.apache.org/derby/docs/10.4/devguide/rdevcsecure26537.html
Fonctionne parfaitement maintenant.
Qu'est-ce que
Connection.createNewConnection
? Je n'ai jamais entendu parler d'une telle méthode surjava.sql.Connection
, et je ne le trouve pas dans les docs.J'ai toujours utiliser
DriverManager.getConnection
pour établir mon Derby connexions de base de données.