De beruchte java.sql.SQLException:geen geschikte driver gevonden
Deze uitzondering kan in principe twee . hebben oorzaken:
#1. JDBC-stuurprogramma is niet geladen
U moet ervoor zorgen dat het JDBC-stuurprogramma in de server's eigen /lib
. wordt geplaatst map.
Of, wanneer u eigenlijk geen door de server beheerde gegevensbron voor verbindingsgroepen gebruikt, maar handmatig aan het rommelen bent met DriverManager#getConnection()
in WAR, dan moet u het JDBC-stuurprogramma in WAR's /WEB-INF/lib
plaatsen en voer ..
Class.forName("com.example.jdbc.Driver");
.. in uw code voor de eerste DriverManager#getConnection()
oproep waarbij je ervoor zorgt dat je niet slikken/negeren elke ClassNotFoundException
die erdoor kan worden gegooid en de codestroom voortzetten alsof er niets bijzonders is gebeurd. Zie ook Waar moet ik het JDBC-stuurprogramma voor Tomcat's verbindingspool plaatsen?
#2. Of de JDBC-URL heeft de verkeerde syntaxis
U moet ervoor zorgen dat de JDBC-URL in overeenstemming is met de JDBC-stuurprogrammadocumentatie en onthoud dat deze meestal hoofdlettergevoelig is. Wanneer de JDBC-URL niet true
retourneert voor Driver#acceptsURL()
voor een van de geladen stuurprogramma's, krijgt u ook precies deze uitzondering.
In het geval van PostgreSQL het is hier gedocumenteerd.
Bij JDBC wordt een database weergegeven door een URL (Uniform Resource Locator). Met PostgreSQL™ kan dit een van de volgende vormen aannemen:
jdbc:postgresql:database
jdbc:postgresql://host/database
jdbc:postgresql://host:port/database
In het geval van MySQL het is hier gedocumenteerd.
Het algemene formaat voor een JDBC-URL om verbinding te maken met een MySQL-server is als volgt, met items tussen vierkante haken ([ ]
) optioneel zijn:
jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]] » [?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]
In het geval van Oracle het is hier gedocumenteerd.
Er zijn 2 URL-syntaxis, de oude syntaxis die alleen werkt met SID en de nieuwe met de Oracle-servicenaam.
Oude syntaxis jdbc:oracle:thin:@[HOST][:PORT]:SID
Nieuwe syntaxis jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE
###Zie ook:
- Waar moet ik het JDBC-stuurprogramma voor de verbindingspool van Tomcat plaatsen?
- JDBC-stuurprogramma installeren in Eclipse-webproject zonder geconfronteerd te worden met java.lang.ClassNotFoundexception
- Hoe moet ik verbinding maken met de JDBC-database / gegevensbron in een op servlet gebaseerde toepassing?
- Wat is het verschil tussen "Class.forName()" en "Class.forName().newInstance()"?
- Verbind Java met een MySQL-database