PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Le tristement célèbre java.sql.SQLException :aucun pilote approprié n'a été trouvé

La tristement célèbre java.sql.SQLException :Aucun pilote approprié n'a été trouvé

Cette exception peut avoir essentiellement deux provoque :

#1. Le pilote JDBC n'est pas chargé

Vous devez vous assurer que le pilote JDBC est placé dans le propre /lib du serveur dossier.

Ou, lorsque vous n'utilisez pas une source de données de pool de connexions gérée par le serveur, mais que vous manipulez manuellement DriverManager#getConnection() dans WAR, alors vous devez placer le pilote JDBC dans /WEB-INF/lib de WAR et effectuer ..

Class.forName("com.example.jdbc.Driver");

.. dans votre code avant le premier DriverManager#getConnection() appel par lequel vous vous assurez que vous ne le faites pas avaler/ignorer toute ClassNotFoundException qui peut être lancé par celui-ci et continuer le flux de code comme si rien d'exceptionnel ne s'était produit. Voir aussi Où dois-je placer le pilote JDBC pour le pool de connexion de Tomcat ?

#2. Ou, l'URL JDBC est dans une mauvaise syntaxe

Vous devez vous assurer que l'URL JDBC est conforme à la documentation du pilote JDBC et garder à l'esprit qu'elle est généralement sensible à la casse. Lorsque l'URL JDBC ne renvoie pas true pour Driver#acceptsURL() pour l'un des pilotes chargés, vous obtiendrez également exactement cette exception.

Dans le cas de PostgreSQL c'est documenté ici.

Avec JDBC, une base de données est représentée par une URL (Uniform Resource Locator). Avec PostgreSQL™, cela prend l'une des formes suivantes :

  • jdbc:postgresql:database
  • jdbc:postgresql://host/database
  • jdbc:postgresql://host:port/database

En cas de MySQL c'est documenté ici.

Le format général d'une URL JDBC pour se connecter à un serveur MySQL est le suivant, avec des éléments entre crochets ([ ] ) étant facultatif :

jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]] » [?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]

Dans le cas d'Oracle c'est documenté ici.

Il existe 2 syntaxes d'URL, l'ancienne syntaxe qui ne fonctionnera qu'avec le SID et la nouvelle avec le nom du service Oracle.

Ancienne syntaxe jdbc:oracle:thin:@[HOST][:PORT]:SID

Nouvelle syntaxe jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE

###Voir aussi :

  • Où dois-je placer le pilote JDBC pour le pool de connexion de Tomcat ?
  • Comment installer le pilote JDBC dans un projet Web Eclipse sans faire face à java.lang.ClassNotFoundexception
  • Comment dois-je me connecter à la base de données/source de données JDBC dans une application basée sur un servlet ?
  • Quelle est la différence entre "Class.forName()" et "Class.forName().newInstance()" ?
  • Connecter Java à une base de données MySQL