2015-10-28 27 views
5

następujący kod:Czy potrzebny jest mechanizm Class.forName()?

Class.forName(dbDriver); // "org.postgres.Driver" or "com.mysql.jdbc.Driver" 

jest/było konieczne, aby otworzyć połączenie JDBC.

Słyszałem, że nie jest już potrzebny z nowoczesnymi sterownikami JDBC. Jednak nie mogę usunąć go w moim projekcie, ponieważ otrzymuję wyjątek No suitable driver found. Używam postgresql-9.1-901.jdbc3.jar, Java7 i tomcat7.

Kiedy mogę pominąć konstrukcję Class.forName(...)?

+0

sterowniki jdbc4 są dostępne. Jako że warstwa Java między bazą danych a java również ewoluowała (nowsze typy), warto. –

+0

Używasz sterownika JDBC 3, może on nie zawierać pliku usług wymaganych do ładowania sterownika JDBC 4. –

Odpowiedz

9

Class.forName() nie jest potrzebny od JDBC 4.0. Jest to fragment z Java Tutorials on JDBC.

W poprzednich wersjach JDBC, w celu uzyskania połączenia, najpierw musiał zainicjować sterownika JDBC poprzez wywołanie metody Class.forName. Te metody wymagały obiektu typu java.sql.Driver. Każdy sterownik JDBC zawiera jedną lub więcej klas, które implementują interfejs java.sql.Driver. Sterowniki dla Java DB to org.apache.derby.jdbc.EmbeddedDriver i org.apache.derby.jdbc.ClientDriver, a jeden dla MySQL Connector/J to com.mysql.jdbc.Driver. Zobacz dokumentację sterownika DBMS, aby uzyskać nazwę klasy implementującej interfejs java.sql.Driver.

Dowolne sterowniki JDBC 4.0, które znajdują się w ścieżce klasy, są automatycznie ładowane pod numer . (Jednakże, należy ręcznie załadować jakieś sterowniki przed JDBC 4.0 z metody Class.forName.)