如何在Java程序中使用JDBC Driver连接SQL Server
2018年8月27日

最近我开始支持 Microsoft JDBC Driver for SQL server,它能够使 Java 应用连接到微软 SQL Server。由于从未接触过 Java 开发,所以写下这篇文章记录如何创建一个最简单的控制台 Java 程序通过 JDBC Driver 来连接 SQL Server。

  1. 下载并安装 JDK:https://www.oracle.com/technetwork/java/javase/downloads/index.html,本文将使用 JDK 8 (8u181) 因为它是官方推荐的 JDBC Driver 7.0 的 Java 运行时版本。

  2. 由于我们需要用到javac.exe来编译 Java 程序,为了在任何地方都能运行javac.exe,需要把C:\Program Files\Java\jdk1.8.0_181\bin添加到系统环境变量:Path

  3. 下载Microsoft JDBC Driver 7.0 for SQL Serverhttps://www.microsoft.com/en-us/download/details.aspx?id=57175

  4. 运行sqljdbc_7.0.0.0_enu.exe 并将其内容解压至任何地方,这里我们解压至:C:\jdbc7

  5. 解压后,在 Java8 中使用的 JDBC Driver 可以在C:\jdbc7\sqljdbc_7.0\enu\mssql-jdbc-7.0.0.jre8.jar找到,为了让编译器能够找到 JDBC Driver,我们需要把这个路径加到名为classpath的系统变量中去。

  6. 创建 JDBC 测试程序文件夹:C:\jdbc-app

  7. 保存下面的程序代码至:C:\jdbc-app\JDBCTest.java

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class JDBCTest {
        public static void main(String[] args) {
            String connectionUrl =
                    "jdbc:sqlserver://192.168.199.221:1433;databaseName=TestDB;integratedSecurity=true";
    
            try (Connection con = DriverManager.getConnection(connectionUrl);
                    Statement stmt = con.createStatement();) {
                String SQL = "SELECT TOP 10 * FROM Person;";
                ResultSet rs = stmt.executeQuery(SQL);
                while (rs.next()) {
                    System.out.println(rs.getString("Name"));
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    
  8. 在测试程序中,我们使用集成身份认证来连接远程的 SQL Server。集成身份认证需要用到sqljdbc_auth.dll。我们可以在C:\jdbc7\sqljdbc_7.0\enu\auth\x64(64 位系统)或C:\jdbc7\sqljdbc_7.0\enu\auth\x86(32 位系统)中找到该 DLL,然后复制sqljdbc_auth.dllC:\jdbc-app

  9. C:\jdbc-app添加到classpath

  10. 打开 CMD,在C:\jdbc-app下运行javac JDBCTest.java来编译我们的 JDBC 测试程序,编译完了会创建出JDBCTest.class

  11. 运行java JDBCTest来测试程序的输出。

    C:\jdbc-app>javac JDBCTest.java
    
    C:\jdbc-app>java JDBCTest
    John
    Marry
    Kevin
    
    C:\jdbc-app>