Dal Java documentationClass.forName sembra ancora necessario
Nelle precedenti versioni di JDBC, per ottenere una connessione, si doveva prima di inizializzare il driver JDBC chiamando il metodo Class.forName.
Tutti i driver JDBC 4.0 che si trovano nel percorso della classe vengono caricati automaticamente. (Tuttavia, è necessario caricare manualmente i driver prima di JDBC 4.0 con il metodo Class.forName.)
Ho un webservice jersey, che si connette a SQL Server Express 2016. Ha sqljdbc42.jar che è 4.2 conducente, nel CLASSPATH
Tuttavia, se tralascio la chiamata Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
, il mio DriverManager.getConnection
tiri un (Nessun driver adatto trovato per JDBC: sqlserver: // localhost: 1433; .... ") SQLException
I getConnection
inizia successo una volta aggiungo la chiamata Class.forName
.
Sono su Java 8.
Cosa mi manca?
AGGIORNAMENTO: Ho appena provato un programma a riga di comando e funziona senza lo forName
. Tuttavia, dal mio IDE Eclipse in cui sto eseguendo il mio servizio REST come server Tomcat 8.0 su localhost, non funziona.
* "... sqljdbc42.jar che è 4.0 driver" * [Prova qui] (https://msdn.microsoft.com/en-us/library/ms378422 (v = sql.110) .aspx), per tutti gli altri scettici. :-) Beh, ok, non è un driver 4.0, è un driver 4.2, ma ... –
@TJCrowder aggiornato :-) – user93353
Se così sembra che Microsoft non ami seguire gli standard –