2014-01-22 63 views
0

我想通過Java訪問MSSQL數據庫,並且只寫了一個小測試類來查看連接是否可用。我已經通過maven依賴項將JDBC驅動程序添加到構建路徑中。通過JDBC的MSSQL錯誤:java.lang.UnsupportedOperationException

TRANSLATION for exception: is not supported by this driver。使用類庫提供的'sqljdbc4.jar',支持JDBC 4.0

但是,當執行代碼時拋出java.lang.UnsupportedOperationException。下面是完整的錯誤日誌:

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

「我有通過maven依賴項將JDBC驅動程序添加到構建路徑中。「 ...以及哪個依賴性會是?提示:它告訴你你正在使用錯誤版本的庫。 –

+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

谷歌翻譯說,唯一的例外是:

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這就是爲什麼我根本不理解這個消息,我也嘗試使用Java 1.6來執行,同樣的錯誤信息(在這種情況下只是說「版本1.6」)。 – daZza