PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Die berüchtigte java.sql.SQLException:Kein passender Treiber gefunden

Die berüchtigte java.sql.SQLException:Kein passender Treiber gefunden

Diese Ausnahme kann grundsätzlich zwei haben Ursachen:

#1. JDBC-Treiber ist nicht geladen

Sie müssen sicherstellen, dass der JDBC-Treiber in der servereigenen /lib abgelegt wird Ordner.

Oder wenn Sie eigentlich keine vom Server verwaltete Verbindungspool-Datenquelle verwenden, sondern manuell mit DriverManager#getConnection() herumspielen in WAR, dann müssen Sie den JDBC-Treiber in /WEB-INF/lib von WAR platzieren und führe ..

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

.. in Ihrem Code vorher der erste DriverManager#getConnection() anrufen, wobei Sie sicherstellen, dass Sie es nicht tun ClassNotFoundException schlucken/ignorieren die von ihm geworfen werden können und den Codefluss fortsetzen, als ob nichts Außergewöhnliches passiert wäre. Siehe auch Wo muss ich den JDBC-Treiber für den Verbindungspool von Tomcat platzieren?

#2. Oder die JDBC-URL hat die falsche Syntax

Sie müssen sicherstellen, dass die JDBC-URL mit der JDBC-Treiberdokumentation übereinstimmt, und beachten Sie, dass normalerweise zwischen Groß- und Kleinschreibung unterschieden wird. Wenn die JDBC-URL nicht true zurückgibt für Driver#acceptsURL() für einen der geladenen Treiber erhalten Sie auch genau diese Ausnahme.

Im Fall von PostgreSQL es ist hier dokumentiert.

Bei JDBC wird eine Datenbank durch eine URL (Uniform Resource Locator) repräsentiert. Bei PostgreSQL™ nimmt dies eine der folgenden Formen an:

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

Im Fall von MySQL es ist hier dokumentiert.

Das allgemeine Format für eine JDBC-URL zum Herstellen einer Verbindung zu einem MySQL-Server ist wie folgt, mit Elementen in eckigen Klammern ([ ] ) optional:

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

Im Fall von Oracle es ist hier dokumentiert.

Es gibt 2 URL-Syntaxen, die alte Syntax, die nur mit SID funktioniert, und die neue mit dem Oracle-Dienstnamen.

Alte Syntax jdbc:oracle:thin:@[HOST][:PORT]:SID

Neue Syntax jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE

###Siehe auch:

  • Wo muss ich den JDBC-Treiber für den Verbindungspool von Tomcat platzieren?
  • So installieren Sie den JDBC-Treiber in einem Eclipse-Webprojekt, ohne auf eine java.lang.ClassNotFound-Ausnahme zu stoßen
  • Wie soll ich eine Verbindung zur JDBC-Datenbank/Datenquelle in einer Servlet-basierten Anwendung herstellen?
  • Was ist der Unterschied zwischen "Class.forName()" und "Class.forName().newInstance()"?
  • Java mit einer MySQL-Datenbank verbinden