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 ..
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