Niesławny wyjątek java.sql.SQLException:nie znaleziono odpowiedniego sterownika
Ten wyjątek może mieć zasadniczo dwa przyczyny:
#1. Sterownik JDBC nie jest załadowany
Musisz upewnić się, że sterownik JDBC jest umieszczony we własnym /lib
serwera folder.
Lub, gdy w rzeczywistości nie korzystasz ze źródła danych puli połączeń zarządzanych przez serwer, ale ręcznie bawisz się funkcją DriverManager#getConnection()
w WAR, musisz umieścić sterownik JDBC w /WEB-INF/lib
WAR i wykonaj ..
Class.forName("com.example.jdbc.Driver");
.. w kodzie przed pierwszy DriverManager#getConnection()
zadzwoń, dzięki czemu upewnisz się, że nie połknij/zignoruj każdy ClassNotFoundException
które mogą zostać przez niego wyrzucone i kontynuują przepływ kodu tak, jakby nie wydarzyło się nic wyjątkowego. Zobacz także Gdzie muszę umieścić sterownik JDBC dla puli połączeń Tomcata?
#2. Lub adres URL JDBC ma niewłaściwą składnię
Musisz upewnić się, że adres URL JDBC jest zgodny z dokumentacją sterownika JDBC i pamiętaj, że zwykle rozróżniana jest wielkość liter. Gdy adres URL JDBC nie zwraca true
dla Driver#acceptsURL()
dla dowolnego załadowanego sterownika, otrzymasz dokładnie ten wyjątek.
W przypadku PostgreSQL jest to udokumentowane tutaj.
W przypadku JDBC baza danych jest reprezentowana przez adres URL (Uniform Resource Locator). W PostgreSQL™ przyjmuje to jedną z następujących form:
jdbc:postgresql:database
jdbc:postgresql://host/database
jdbc:postgresql://host:port/database
W przypadku MySQL jest to udokumentowane tutaj.
Ogólny format adresu URL JDBC do łączenia się z serwerem MySQL jest następujący, z elementami w nawiasach kwadratowych ([ ]
) jest opcjonalne:
jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]] » [?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]
W przypadku Oracle jest to udokumentowane tutaj.
Istnieją 2 składnie adresów URL, stara składnia, która będzie działać tylko z SID i nowa z nazwą usługi Oracle.
Stara składnia jdbc:oracle:thin:@[HOST][:PORT]:SID
Nowa składnia jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE
###Zobacz też:
- Gdzie muszę umieścić sterownik JDBC dla puli połączeń Tomcata?
- Jak zainstalować sterownik JDBC w projekcie internetowym Eclipse bez stawiania czoła java.lang.ClassNotFoundexception
- Jak powinienem połączyć się z bazą danych/źródłem danych JDBC w aplikacji opartej na serwlecie?
- Jaka jest różnica między „Class.forName()” a „Class.forName().newInstance()”?
- Połącz Javę z bazą danych MySQL