java - 在Java中使用SQL Driver连接到远程SQL Server

标签 java sql sql-server jdbc dsn

要点:

  • 使用 SQL Server 2005
  • 使用 JDK 1.8
  • JDK 1.8 不再支持 JDBC-ODBC 桥
  • 我的库中同时有 Microsoft SQLJDBC 4.0 和 6.2

我尝试用 Java 连接到远程 SQL Server 已经有一段时间了,但仍然无法连接。我希望使用我创建的 DSN 进行连接。 JDK 1.8 使用的新驱动程序需要一个我在下面创建的连接 URL。下面代码中的所有内容看起来都是正确的。但我仍然收到错误:

SEVERE: Java Runtime Environment (JRE) version 1.8 is not supported by this driver. Use the sqljdbc4.jar class library, which provides support for JDBC 4.0. java.lang.UnsupportedOperationException: Java Runtime Environment (JRE) version 1.8 is not supported by this driver.
Use the sqljdbc4.jar class library, which provides support for JDBC 4.0.

这是我的代码:

String connectionUrl = "jdbc:sqlserver://InterfaceDSN" +  
    "databaseName=DB_Local;Trusted_Connection=True;integratedSecurity=true";  

    // Declare the JDBC objects.  
    Connection con = null;  
    Statement stmt = null;  
    ResultSet rs = null;  

    try 
    {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");  
        con = DriverManager.getConnection(connectionUrl);  

        String SQL = "SELECT TOP 10 * FROM Person.Contact";  
        stmt = con.createStatement();  
        rs = stmt.executeQuery(SQL);

        while (rs.next()) {  
          System.out.println(rs.getString(4) + " " + rs.getString(6));  
        }  
    }catch (Exception e) 
    {  
        e.printStackTrace();  
    }

总结: 知道我拥有什么和需要什么,是否有另一种方法可以连接到数据库,考虑到我将 JDK 1.8 与 SQL Server 2005 一起使用,我已经没有选择了。

最佳答案

发生了什么

正如消息所说:

java.lang.UnsupportedOperationException: Java Runtime Environment (JRE) version 1.8 is not supported by this driver.
Use the sqljdbc4.jar class library, which provides support for JDBC 4.0.

这是因为JDBC4.0有很多变化,意味着您需要使用更新版本的驱动程序。您无法在新版本上运行旧驱动程序。

如何修复

仅使用 6.2 或版本 6.2.2.jre8应该可以解决这个问题。

额外信息

在 JDBC 4.0 (Java 1.6+) 之后您不需要以下代码

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");  

关于java - 在Java中使用SQL Driver连接到远程SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46958310/

相关文章:

mysql - 将 SQL 查询合并为一个

Java 方法返回初始化变量,而不是变量的最终值。

java - JSP Servlet getParameter() 给出 null

mysql - 如何使用 MySql 将产品重量从克更改为公斤?

java - Hibernate 查询 "or condition"将不起作用

c# - SQL Server 应用程序 - 将数据库重置为原始状态

java - 如何抓取 HTTPS javascript 网页

java - 什么是存储 RPG 游戏项目的良好 Java 数据结构?

sql - SQL Server 2005 中两个值不同时无法绑定(bind)多部分标识符

sql-server - Azure SQL 数据库 - 查询速度明显慢于 Azure VM 上的 SQL 数据库