От Java documentationClass.forName все еще кажется необходимым
В предыдущих версиях JDBC, чтобы получить соединение, вы сначала должны были инициализировать драйвер JDBC с помощью вызова метода Class.forName.
Все драйверы JDBC 4.0, которые находятся в вашем пути к классу, автоматически загружаются. (Тем не менее, вы должны вручную загрузить все драйверы до до JDBC 4.0 с помощью метода Class.forName.)
У меня есть джерси WebService, который подключается к SQL Server Express 2016. Он имеет sqljdbc42.jar что 4,2 драйвера, в CLASSPATH
Однако, если опустить Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
вызов, мой DriverManager.getConnection
не бросает SQLException
(нет подходящего драйвера найден для JDBC: SQLServer: // Localhost: 1433; .... ")
The getConnection
начинается после того, как я добавлю Class.forName
.
Я нахожусь на Java 8.
Что мне не хватает?
UPDATE: Я просто попробовал программу командной строки, и она работает без forName
. Однако из моей Eclipse IDE, где я запускаю службу REST в качестве сервера Tomcat 8.0 на локальном хосте, он не работает.
* "... sqljdbc42.jar, который является драйвером 4.0" * [Доказательство здесь] (https://msdn.microsoft.com/en-us/library/ms378422 (v = sql.110) .aspx), для любых скептиков. :-) Ну, ладно, это не драйвер 4.0, это 4.2-драйвер, но ... –
@TJCrowder обновлен :-) – user93353
Если так, похоже, Microsoft не любит следовать стандартам –