Den berygtede java.sql.SQLEundtagelse:Ingen passende driver fundet
Denne undtagelse kan grundlæggende have to årsager:
#1. JDBC-driveren er ikke indlæst
Du skal sikre, at JDBC-driveren er placeret i serverens egen /lib
mappe.
Eller, når du faktisk ikke bruger en serverstyret forbindelsespool-datakilde, men manuelt fifler rundt med DriverManager#getConnection()
i WAR, så skal du placere JDBC-driveren i WAR's /WEB-INF/lib
og udføre ..
Class.forName("com.example.jdbc.Driver");
.. i din kode før den første DriverManager#getConnection()
opkald, hvorved du sikrer dig, at du ikke gør det sluge/ignorere enhver ClassNotFoundException
som kan kastes af det og fortsætte kodestrømmen, som om intet usædvanligt skete. Se også Hvor skal jeg placere JDBC-driveren til Tomcats forbindelsespulje?
#2. Eller JDBC URL er i forkert syntaks
Du skal sikre dig, at JDBC-URL'en er i overensstemmelse med JDBC-driverdokumentationen og huske på, at der normalt skelnes mellem store og små bogstaver. Når JDBC URL'en ikke returnerer true
for Driver#acceptsURL()
for enhver af de indlæste drivere, så får du også præcis denne undtagelse.
I tilfælde af PostgreSQL det er dokumenteret her.
Med JDBC er en database repræsenteret af en URL (Uniform Resource Locator). Med PostgreSQL™ tager dette en af følgende former:
jdbc:postgresql:database
jdbc:postgresql://host/database
jdbc:postgresql://host:port/database
I tilfælde af MySQL det er dokumenteret her.
Det generelle format for en JDBC URL til at oprette forbindelse til en MySQL-server er som følger med elementer i firkantede parenteser ([ ]
) er valgfri:
jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]] » [?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]
I tilfælde af Oracle det er dokumenteret her.
Der er 2 URL-syntaks, gammel syntaks, som kun fungerer med SID, og den nye med Oracle-tjenestenavn.
Gammel syntaks jdbc:oracle:thin:@[HOST][:PORT]:SID
Ny syntaks jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE
###Se også:
- Hvor skal jeg placere JDBC-driveren til Tomcats forbindelsespulje?
- Sådan installeres JDBC-driveren i Eclipse-webprojektet uden at se java.lang.ClassNotFoundexception
- Hvordan skal jeg oprette forbindelse til JDBC-databasen/datakilden i en servletbaseret applikation?
- Hvad er forskellen mellem "Class.forName()" og "Class.forName().newInstance()"?
- Tilslut Java til en MySQL-database