Probleme connection base de donnée Derby EmbeddedDriver

julienboulet Messages postés 4 Date d'inscription vendredi 4 juin 2010 Statut Membre Dernière intervention 8 juin 2010 - 8 juin 2010 à 09:48
 Skander_Jenhani - 13 févr. 2019 à 16:31
Bonjour, j'ai suivi ce tuto afin de pouvoir créer mes bases de données embarquées. J'ai réussi à créer la base MYTABELLE comme dans le tuto. Mon problème vient après lorsque j'essaie de créer une classe afin de me connecter à cette base.

Voici mon code:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;

public class ConnectionDB{

public static void main(String[] args) {

try {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
System.out.println("DRIVER OK ! ");

String url = "jdbc:derby:/Users/ceb/MyDB";
String user = "";
String passwd = "";

Connection conn = DriverManager.getConnection(url, user, passwd);
System.out.println("Connection effective !");			

//Création d'un objet Statement
Statement state = conn.createStatement();
//L'objet ResultSet contient le résultat de la requête SQL
System.out.println("la");
ResultSet result = state.executeQuery("SELECT * FROM MYTABELLE");
//On récupère les MetaData
ResultSetMetaData resultMeta = result.getMetaData();

System.out.println("\n**********************************");
//On affiche le nom des colonnes
for(int i = 1; i <=  resultMeta.getColumnCount(); i++)
System.out.print("\t" + resultMeta.getColumnName(i).toUpperCase() + "\t *");

System.out.println("\n**********************************");

while(result.next()){			
for(int i = 1; i <=  resultMeta.getColumnCount(); i++)
System.out.print("\t" + result.getObject(i).toString() + "\t |");

System.out.println("\n---------------------------------");

}


                        result.close();
                        state.close();


} catch (Exception e) {
e.printStackTrace();
}		

}
}


Et l'erreur

DRIVER OK ! 
java.sql.SQLException: Echec du démarrage de la base de données '/Users/ceb/MyDB' ; pour plus de détails, voir l'exception suivante.
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.seeNextException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection30.(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection40.(Unknown Source)
at org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Unknown Source)
at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at ConnectionDB.main(ConnectionDB.java:19)
Caused by: java.sql.SQLException: Echec du démarrage de la base de données '/Users/ceb/MyDB' ; pour plus de détails, voir l'exception suivante.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)
... 13 more
Caused by: java.sql.SQLException: Il est possible qu'une autre instance de Derby ait déjà amorcé la base de données /Users/ceb/MyDB.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
... 10 more
Caused by: ERROR XSDB6: Il est possible qu'une autre instance de Derby ait déjà amorcé la base de données /Users/ceb/MyDB.
at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.privGetJBMSLockOnDB(Unknown Source)
at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.getJBMSLockOnDB(Unknown Source)
at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.boot(Unknown Source)
at org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown Source)
at org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown Source)
at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(Unknown Source)
at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Unknown Source)
at org.apache.derby.impl.store.raw.RawStore.boot(Unknown Source)
at org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown Source)
at org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown Source)
at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(Unknown Source)
at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Unknown Source)
at org.apache.derby.impl.store.access.RAMAccessManager.boot(Unknown Source)
at org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown Source)
at org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown Source)
at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(Unknown Source)
at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Unknown Source)
at org.apache.derby.impl.db.BasicDatabase.bootStore(Unknown Source)
at org.apache.derby.impl.db.BasicDatabase.boot(Unknown Source)
at org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown Source)
at org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown Source)
at org.apache.derby.impl.services.monitor.BaseMonitor.bootService(Unknown Source)
at org.apache.derby.impl.services.monitor.BaseMonitor.startProviderService(Unknown Source)
at org.apache.derby.impl.services.monitor.BaseMonitor.findProviderAndStartService(Unknown Source)
at org.apache.derby.impl.services.monitor.BaseMonitor.startPersistentService(Unknown Source)
at org.apache.derby.iapi.services.monitor.Monitor.startPersistentService(Unknown Source)
... 10 more


j'ai testé avec:

ResultSet result = state.executeQuery("SELECT * FROM MYTABELLE");
ResultSet result = state.executeQuery("SELECT * FROM MYBASEINIT");
ResultSet result = state.executeQuery("SELECT * FROM MYBASEINIT.MYTABELLES");


J'ai besoin de votre aide. Merci d'avance.

4 réponses

Skander_Jenhani
13 févr. 2019 à 16:31
Bonjour, j'avais la même erreur, là je l'ai résolut tout seul, il suffit de déconnecter la base sous data source explorer puisque derby c'est une base memory en mode multi tenant (on peut ouvrir qu'une seul connexion uniquement avec la base).
1
julienboulet Messages postés 4 Date d'inscription vendredi 4 juin 2010 Statut Membre Dernière intervention 8 juin 2010
8 juin 2010 à 09:52
Petite erreur, mon message d'erreur est en faite celui-ci:

DRIVER OK ! 
Connection effective !
la
java.sql.SQLSyntaxErrorException: La table/vue 'MYTABELLE' n'existe pas.
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.executeQuery(Unknown Source)
at ConnectionDB.main(ConnectionDB.java:26)
Caused by: java.sql.SQLException: La table/vue 'MYTABELLE' n'existe pas.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)
... 9 more
Caused by: ERROR 42X05: La table/vue 'MYTABELLE' n'existe pas.
at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
at org.apache.derby.impl.sql.compile.FromBaseTable.bindTableDescriptor(Unknown Source)
at org.apache.derby.impl.sql.compile.FromBaseTable.bindNonVTITables(Unknown Source)
at org.apache.derby.impl.sql.compile.FromList.bindTables(Unknown Source)
at org.apache.derby.impl.sql.compile.SelectNode.bindNonVTITables(Unknown Source)
at org.apache.derby.impl.sql.compile.DMLStatementNode.bindTables(Unknown Source)
at org.apache.derby.impl.sql.compile.DMLStatementNode.bind(Unknown Source)
at org.apache.derby.impl.sql.compile.CursorNode.bindStatement(Unknown Source)
at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
... 3 more
0
julienboulet Messages postés 4 Date d'inscription vendredi 4 juin 2010 Statut Membre Dernière intervention 8 juin 2010
8 juin 2010 à 09:57
C'est bon j'ai trouvé tout seul, voilà le code pour info:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;

public class ConnectionDB{

public static void main(String[] args) {

try {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
System.out.println("DRIVER OK ! ");

String url = "jdbc:derby:/Users/ceb/MyDB";
String user = "";
String passwd = "";

Connection conn = DriverManager.getConnection(url, user, passwd);
System.out.println("Connection effective !");			

//Création d'un objet Statement
Statement state = conn.createStatement();
//L'objet ResultSet contient le résultat de la requête SQL
System.out.println("la");
ResultSet result = state.executeQuery("SELECT * FROM MYBASEINIT.MYTABELLE");
//On récupère les MetaData
ResultSetMetaData resultMeta = result.getMetaData();

System.out.println("\n**********************************");
//On affiche le nom des colonnes
for(int i = 1; i <=  resultMeta.getColumnCount(); i++)
System.out.print("\t" + resultMeta.getColumnName(i).toUpperCase() + "\t *");

System.out.println("\n**********************************");

while(result.next()){			
for(int i = 1; i <=  resultMeta.getColumnCount(); i++)
System.out.print("\t" + result.getObject(i).toString() + "\t |");

System.out.println("\n---------------------------------");

}


                        result.close();
                        state.close();


} catch (Exception e) {
e.printStackTrace();
}		

}
}
0
khaled001 Messages postés 156 Date d'inscription mardi 19 août 2008 Statut Membre Dernière intervention 8 août 2016
5 févr. 2011 à 17:50
Salut

J'ai le méme probleme que toi peut tu m'aider stp voici mon code

package Programmation;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;

public class connection{

public static void main(String[] args) {

try { 
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
System.out.println("DRIVER OK ! ");

String url = "jdbc:derby:/Mehdi/MyDB;create=true";
String user = "slide";
String passwd = "123";

Connection conn = DriverManager.getConnection(url, user, passwd);
System.out.println("Connection effective !");			

//Création d'un objet Statement
Statement state = conn.createStatement();
//L'objet ResultSet contient le résultat de la requête SQL
System.out.println("la");
ResultSet result = state.executeQuery("SELECT * FROM MYKILLERAPP.MyTabelle");
//On récupère les MetaData
ResultSetMetaData resultMeta = result.getMetaData();

System.out.println("\n**********************************");
//On affiche le nom des colonnes
for(int i = 1; i <=  resultMeta.getColumnCount(); i++)
System.out.print("\t" + resultMeta.getColumnName(i).toUpperCase() + "\t *");

System.out.println("\n**********************************");

while(result.next()){			
for(int i = 1; i <=  resultMeta.getColumnCount(); i++)
System.out.print("\t" + result.getObject(i).toString() + "\t |");

System.out.println("\n---------------------------------");

}


                        result.close();
                        state.close();


} catch (Exception e) {
e.printStackTrace();
}		

}
}


et voici l'erreur qui s'affiche apres execution :

DRIVER OK ! 
Connection effective !
la
ERROR 42Y07: Schema 'MYKILLERAPP' does not exist
at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
at org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getSchemaDescriptor(Unknown Source)
at org.apache.derby.impl.sql.compile.QueryTreeNode.getSchemaDescriptor(Unknown Source)
at org.apache.derby.impl.sql.compile.QueryTreeNode.getSchemaDescriptor(Unknown Source)
at org.apache.derby.impl.sql.compile.FromBaseTable.bindTableDescriptor(Unknown Source)
at org.apache.derby.impl.sql.compile.FromBaseTable.bindNonVTITables(Unknown Source)
at org.apache.derby.impl.sql.compile.FromList.bindTables(Unknown Source)
at org.apache.derby.impl.sql.compile.SelectNode.bindNonVTITables(Unknown Source)
at org.apache.derby.impl.sql.compile.DMLStatementNode.bindTables(Unknown Source)
at org.apache.derby.impl.sql.compile.DMLStatementNode.bind(Unknown Source)
at org.apache.derby.impl.sql.compile.ReadCursorNode.bind(Unknown Source)
at org.apache.derby.impl.sql.compile.CursorNode.bind(Unknown Source)
at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.executeQuery(Unknown Source)
at Programmation.connection.main(connection.java:28)


alors que le shéma MYKILLERAPP existe bien dans ma base de données bref est ce que tu peut m'aider stp ?

Cordialement
0
Rejoignez-nous