2014-01-22 6 views
0

Я пытаюсь получить доступ к базе данных MSSQL через Java и просто написал небольшой класс тестирования, чтобы узнать, работает ли соединение вообще. Я добавил драйвер JDBC к пути сборки через зависимость от maven.MSSQL через JDBC Ошибка: java.lang.UnsupportedOperationException

ПЕРЕВОД для исключения: не поддерживается данным драйвером. Использование библиотеки классов предлагает «sqljdbc4.jar», поддержка JDBC 4.0

Однако при выполнении кода генерируется исключение java.lang.UnsupportedOperationException. Ниже приводится полный ErrorLog:

java.lang.UnsupportedOperationException: Die Java-Laufzeitumgebung (Java Runtime Environment, JRE), Version 1.7, wird von diesem Treiber nicht unterstützt. Verwenden Sie die  Klassenbibliothek 'sqljdbc4.jar', die Unterstützung für JDBC 4.0 bietet. 
at com.microsoft.sqlserver.jdbc.SQLServerConnection.<init>(SQLServerConnection.java:304) 
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1011) 
at java.sql.DriverManager.getConnection(DriverManager.java:579) 
at java.sql.DriverManager.getConnection(DriverManager.java:221) 
at test.TestJDBC.dbTest.main(dbTest.java:28) 

Вот мой тестирование класс:

package test.TestJDBC; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.Statement; 

public class dbTest { 

@SuppressWarnings("nls") 
public static void main(final String args[]) { 
    Connection connection = null; 
    try { 

     // the sql server driver string 
     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 

     // the sql server url 
     String url = "jdbc:sqlserver://[dbserver]:1433;DatabaseName=[dbname]"; 

     // get the sql server database connection 
     connection = DriverManager.getConnection(url, "XXX", "YYY"); 

     System.out.println("Connected."); 

     // Create and execute an SQL statement that returns some data. 
     String SQL = "SELECT X, Y, Z FROM ABC"; 
     Statement stmt = connection.createStatement(); 
     ResultSet rs = stmt.executeQuery(SQL); 

     // Iterate through the data in the result set and display it. 
     while (rs.next()) { 
      System.out.println(rs.getString(1) + " " + rs.getString(2)); 
     } 

    } catch (Exception e) { 
     System.out.println("Es ist ein Fehler aufgetreten:"); 
     System.out.println(e.getMessage()); 
     e.printStackTrace(); 
     System.exit(0); 
    } 
} 

} 

Я был бы признателен, если кто-то может указать мне на ошибки я сделал, так как я не могу понять его вне.

+2

«Я добавили драйвер JDBC в путь сборки через зависимость от maven ». ... и какая зависимость будет? Подсказка: он говорит вам, что вы используете неправильную версию библиотеки. –

+0

Спасибо за ваше предложение. Я использую сторонний репозиторий, интегрированный в maven (... \ com \ microsoft \ sqlserver \ sqljdbc4 \ 4.0). Он указывает на файл sqljdbc4.jar. Открыв его в Eclipse, я также могу увидеть правильные пакеты com.microsoft.sqlserver.jdbc и microsoft.sql. Первый - это именно тот пакет, на который я ссылаюсь в объявлении Class.forName, поэтому я не вижу, что здесь не так :( – daZza

+0

попробуйте выполнить «mvn dependency: tree» в вашем проекте. Похоже, что неправильный sqljdbc.jar приземляясь на пути к классам. Может быть, он включен как переходная зависимость из где-то еще? Если это тогда, вы можете определить 'exclude'. – DB5

ответ

0

Google Translate говорит, что исключение:

The Java Runtime Environment (Java Runtime Environment, JRE), version 1.7, is not supported by this driver. Use the Class Library 'sqljdbc4.jar' which provides support for JDBC 4.0.

так это выглядит, как вам нужно, чтобы загрузить последнюю версию драйвера JDBC через страницу здесь

Microsoft JDBC Driver for SQL Server

+0

Извините, забыли перевести его для вас, ребята ... Я использую тот же самый .jar -file, как следует из сообщения. Вот почему я вообще не понимаю сообщение. Я также пытался использовать Java 1.6 для выполнения. Такое же сообщение об ошибке (просто говоря «версия 1.6» в этом случае). – daZza

Смежные вопросы