MSSQL 通过 JDBC 错误:java.lang.UnsupportedOperationException

Posted

技术标签:

【中文标题】MSSQL 通过 JDBC 错误:java.lang.UnsupportedOperationException【英文标题】:MSSQL via JDBC Error: java.lang.UnsupportedOperationException 【发布时间】:2014-01-22 11:47:22 【问题描述】:

我正在尝试通过 Java 访问 MSSQL 数据库,并且刚刚编写了一个小型测试类来查看连接是否正常工作。我已通过 Maven 依赖项将 JDBC 驱动程序添加到构建路径中。

异常翻译: 此驱动程序不支持。使用类库提供'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 );
    



如果有人能指出我所犯的错误,我将不胜感激,因为我似乎无法弄清楚。

【问题讨论】:

“我已通过 maven 依赖项将 JDBC 驱动程序添加到构建路径中。” ...那会是哪种依赖关系?提示:它告诉你你使用了错误的库版本。 感谢您的建议。我正在使用集成到 maven (...\com\microsoft\sqlserver\sqljdbc4\4.0) 中的第三方存储库。它指向 sqljdbc4.jar 文件。在 Eclipse 中打开它时,我还可以在其中看到正确的包 com.microsoft.sqlserver.jdbc 和 microsoft.sql。第一个正是我在 Class.forName 声明中引用的包,所以我看不出这里有什么问题:( 尝试在您的项目上执行mvn dependency:tree。看起来错误的 sqljdbc.jar 登陆了类路径。也许它被包含在其他地方的短暂依赖中?如果是,那么您可以定义一个exclude 【参考方案1】:

谷歌翻译说例外是:

此驱动程序不支持 Java 运行时环境(Java Runtime Environment,JRE)版本 1.7。使用为 JDBC 4.0 提供支持的类库“sqljdbc4.jar”。

看来您需要通过此处的页面下载最新版本的 JDBC 驱动程序

Microsoft JDBC Driver for SQL Server

【讨论】:

抱歉,忘记为你们翻译了……我使用的 .jar 文件与消息提示的完全相同。这就是为什么我根本不明白这个信息。我也尝试使用 Java 1.6 来执行。相同的错误消息(在这种情况下只是说“版本 1.6”)。

以上是关于MSSQL 通过 JDBC 错误:java.lang.UnsupportedOperationException的主要内容,如果未能解决你的问题,请参考以下文章

Maven Shade 插件 + MsSQL JDBC -> 即时 JNI 错误 - 无效的签名文件清单

MSSQL 2008:连接字符串错误

Glassfish中的JDBC连接池ping错误

java开发JDBC连接数据库

缺少 Pentaho MSSQL 本机数据库 JDBC 驱动程序

从 JDBC MSSQL 获取返回值