如何在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>