web-dev-qa-db-fra.com

SQLException: Aucun pilote approprié trouvé pour jdbc: derby: // localhost: 1527

Je reçois cette erreur dans Netbeans:

Java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/

Comment cela est-il causé et comment puis-je le résoudre?

23
Ganesh

Java.sql.SQLException: Aucun pilote approprié trouvé pour jdbc: derby: // localhost: 1527 /

Cette exception a deux causes:

  • Le pilote n'est pas chargé.
  • L'URL JDBC est mal formée.

Dans votre cas, je m'attendrais à voir un nom de la base de données à la fin de la chaîne de connexion. Par exemple (utilisez create=true si vous souhaitez que la base de données soit créée si elle n'existe pas):

jdbc:derby://localhost:1527/dbname;create=true

Les bases de données sont créées par défaut dans le répertoire où le serveur de réseau a été démarré. Mais vous pouvez également spécifier un chemin absolu vers l'emplacement de la base de données:

jdbc:derby://localhost:1527//home/Pascal/derbyDBs/dbname;create=true

Et juste au cas où, vérifiez que derbyclient.jar est sur le chemin de classe et que vous chargez le pilote approprié org.Apache.derby.jdbc.ClientDriver lorsque vous travaillez en mode serveur.

23
Pascal Thivent

Remarque: vous pouvez le télécharger depuis ici .

Si vous ne le trouvez pas, alors 

  1. Trouvez votre projet dans l'onglet de sélection des projets

  2. Clic droit "Bibliothèques"

  3. Cliquez sur "Ajouter un fichier JAR/dossier ..."

  4. Choisissez "derbyclient.jar"

  5. Cliquez sur "Ouvrir", vous verrez alors "derbyclient.jar" sous votre "Bibliothèques"

Assurez-vous que votre URL, nom d'utilisateur, mot de passe est correct et lancez votre code :)

17
Devy

Pour moi

DriverManager.registerDriver(new org.Apache.derby.jdbc.EmbeddedDriver());

aidé. De cette manière, DriveManager connaît le derby EmbeddedDriver. L’allocation d’un nouveau pilote EmbeddedDriver est peut-être trop lourde, mais de l’autre côté, Class.forName a besoin de try/catch/doSomethingIntelligentWithException que je n’aime pas beaucoup.

11
Bruno Eberhard

JDBC DriverManager ne peut trouver aucune Driver appropriée pour l'URL de connexion donnée. Soit le pilote JDBC n'est pas chargé avant la connexion à la base de données, soit l'URL de connexion est incorrecte. Puisque l'URL de connexion a l'air bien, je parie que le pilote n'est pas chargé du tout. Avant de connecter la base de données, vous devez charger le pilote au démarrage de l'application. Pour Apache Derby, le nom de la classe de pilote est org.Apache.derby.jdbc.ClientDriver. Alors:

Class.forName("org.Apache.derby.jdbc.ClientDriver");
4
BalusC

J'ai eu le même problème lorsque j'écrivais une application Java sur Netbean. Voici la solution:

  1. Trouvez votre projet dans l'onglet de sélection des projets

  2. Clic droit "Bibliothèques" 

  3. Cliquez sur "Ajouter un fichier JAR/dossier ..."

  4. Choisissez "derbyclient.jar"

  5. Cliquez sur "Ouvrir", vous verrez alors "derbyclient.jar" sous votre "Bibliothèques"

  6. Assurez-vous que votre URL, votre nom d'utilisateur, votre mot de passe sont corrects et exécutez votre code :)

3
CounterSpell

J'ai résolu ce problème en ajoutant une bibliothèque à la console de bibliothèque située sous mon projet:

  • Faites un clic droit puis ajoutez une bibliothèque
  • ajouter Java DB DRIVER.

Mon projet fonctionne!

2
Mohamed Bawaneen

La question reçoit une réponse mais fournit une ligne de commande à titre d'illustration. Cela a fonctionné pour moi lorsque j'ai essayé un test aussi simple que possible pour me connecter au derby en mode réseau.

  • Pilote chargé dans l'application avec: Class.forName ("org.Apache.derby.jdbc.ClientDriver"). NewInstance ();

  • L'URL de connexion était: "jdbc: derby: // localhost: 1527/myDB; create = true" 

  • J'ai exécuté mon application en utilisant: Java -classpath derbyclient.jar :. myAppClass

2
lemic

Si vous utilisez Derby embedded, vous avez besoin de Derby.jar dans votre chemin de classe.

2
James McMahon

Je faisais face au même problème. Il me manquait l'appel de DriverManager.registerDriver () avant la connexion à l'aide de l'URL de connexion et des informations d'identification de l'utilisateur.

Il a été corrigé sous Linux comme ci-dessous:

DriverManager.registerDriver(new org.Apache.derby.jdbc.ClientDriver());
connection = DriverManager.getConnection("jdbc:derby://localhost:1527//tmp/Test/DB_Name", user, pass);

Pour les fenêtres:

DriverManager.registerDriver(new org.Apache.derby.jdbc.ClientDriver());
connection = DriverManager.getConnection("jdbc:derby://localhost:1527/C:/Users/Test/DB_Name", user, pass);
1
Amit Kaneria

Il se peut qu'il vous manque pour démarrer le serveur Derby . Dès qu'un serveur Derby démarre, il commence à écouter le port par défaut 1527.

Le script de démarrage se trouve comme ci-dessous:

Les fenêtres:

    <DERBY_INSTALLATION_DIRECTORY>/bin/startNetworkServer.bat

Linux:

    <DERBY_INSTALLATION_DIRECTORY>/bin/startNetworkServer
0
Amit Kaneria

J'ai rencontré un problème similaire et cela a été résolu en incluant les fichiers jar derby.jar, derbyclient.jar, derbynet.jar et derbytools.jar dans votre chemin de classe dans Eclipse.

Suivez les étapes -

  1. Faites un clic droit sur votre projet et sélectionnez Chemin de construction -> Configurer le chemin de construction.
  2. Allez dans l'onglet Bibliothèques et cliquez sur 'Ajouter un JAR externe'.

  3. Sélectionnez les pots mentionnés ci-dessus dans le chemin, par exemple. C:\Program Files\Java\jdk1.8.0_161\db\lib

  4. Cliquez sur OK.

J'espère que cela t'aides :)

0
Hetal Rachh

Cette erreur se produit lorsque la syntaxe de la chaîne de connexion n'est pas valide.

Vous pouvez utiliser la chaîne de connexion comme 

'jdbc:derby:MyDbTest;create=true'

ou

vous pouvez utiliser la commande suivante dans la commande Invite, la commande ci-dessous crée une nouvelle base de données appelée MyDbTest avec succès:

connect 'jdbc:derby:MyDbTest;create=true';
0
subho

J'ai essayé tout ce qui est mentionné dans ce fil et seul .registerDriver () a fonctionné pour moi. Voici à quoi ressemble ma partie de code:

DriverManager.registerDriver(new org.Apache.derby.jdbc.ClientDriver());
connection = DriverManager.getConnection(url, user, pass);

Notez que le problème n'était pas dans Derby intégré.

0
dafilipaj

Il est également possible que dans persistence.xml, EmbeddedDriver ait été utilisé alors que l’URL jdbc pointait vers le serveur Derby. Dans ce cas, il suffit de changer l'URL pour pointer un chemin de la base de données.

0
chance

Je suis tombé sur ce problème, j'ai essayé toutes les suggestions ci-dessus, mais j'ai échoué. Sans répéter ce qui a été suggéré ci-dessus, voici ce que je (vous) peux manquer: Si vous utilisez maven, vous déclarerez probablement les dépendances, à savoir:

<groupId>org.Apache.derby</groupId>
<artifactId>derbyclient</artifactId>
<version>10.10.1.1</version>

S'il vous plaît soyez prudent avec la version. Il doit être compatible avec l'instance de serveur que vous exécutez.

J'ai résolu mon cas en abandonnant les dépendances maven fournies et en ajoutant manuellement un fichier JAR externe à partir de "% Java_HOME%\db\lib", la même source que mon serveur en cours d'exécution. Dans ce cas, je teste avec ma section locale.

Ainsi, si vous testez avec une instance de serveur distant, recherchez le fichier derbyclient.jar fourni avec le package de serveur.

0
peterong

si la base de données est créée et que vous avez démarré la connexion à la, alors vous devez ajouter le fichier jar du pilote. Dans la fenêtre du projet, cliquez avec le bouton droit de la souris sur le dossier des bibliothèques, puis allez à: programmesfiles\Sun\javadb\lib\derbyclient.jar charger le fichier et vous devriez pouvoir courir.

bonne chance

0
csejay

Vous pouvez également obtenir la même erreur si le serveur Java DB n'a pas été démarré.

0
ntombela