这里的“包”可以从两个层面理解:

- Java Archive (JAR) 包:这是实际的文件,你需要将其添加到你的项目中,才能让 Java 代码能够与 SQL Server 通信。
- Java 包:这是指在代码中
import的 Java 语言层面的包,它包含了用于数据库操作的类和接口。
下面我将详细解释这两个层面,并提供从入门到实践的完整指南。
核心 JAR 包:Microsoft JDBC Driver for SQL Server
这是连接 Java 和 SQL Server 的桥梁,没有它,你的 Java 代码就无法理解 SQL Server 的语言,这个驱动程序由微软官方提供和推荐。
1 下载驱动
你可以从微软官方网站下载最新版本的 JDBC Driver。
下载后,你会得到一个 .zip 压缩包,解压后你会发现一个名为 mssql-jdbc-<version>.jar 的文件,这个就是你需要添加到项目中的核心 JAR 包。

2 如何将 JAR 包添加到项目中
根据你使用的开发工具或构建工具,有不同的方法:
A. 对于使用 IDE (如 IntelliJ IDEA, Eclipse) 的开发者:
-
IntelliJ IDEA:
- 打开你的项目。
- 进入
File->Project Structure->Modules->Dependencies。 - 点击 号,选择
JARs or directories...。 - 找到你刚刚下载并解压的
mssql-jdbc-<version>.jar文件,点击OK。 - 确保它出现在依赖列表中。
-
Eclipse:
(图片来源网络,侵删)- 右键点击你的项目 ->
Build Path->Configure Build Path。 - 在
Libraries标签页下,点击Add External JARs...。 - 选择
mssql-jdbc-<version>.jar文件,点击Open。
- 右键点击你的项目 ->
B. 对于使用 Maven 构建工具的项目 (推荐):
这是最现代、最推荐的方式,你不需要手动下载 JAR 包,Maven 会自动从中央仓库帮你下载。
在你的 pom.xml 文件中,添加以下依赖:
<!-- 使用最新的稳定版本,12.4.1.jre11 -->
<!-- 你可以去 Maven Central 查找最新版本: https://search.maven.org/artifact/com.microsoft.sqlserver/mssql-jdbc -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>12.4.1.jre11</version>
</dependency>
注意:version 标签中的版本号会不断更新,请根据需要选择合适的版本,新版本会支持更新的 Java 版本和 SQL Server 功能。
C. 对于使用 Gradle 构建工具的项目:
在你的 build.gradle 或 build.gradle.kts 文件中添加:
// build.gradle implementation 'com.microsoft.sqlserver:mssql-jdbc:12.4.1.jre11'
// build.gradle.kts
implementation("com.microsoft.sqlserver:mssql-jdbc:12.4.1.jre11")
Java 代码层面的包
当你添加了上述 JAR 包后,你就可以在你的 Java 代码中 import 并使用微软提供的类了,这些类都位于 com.microsoft.sqlserver.jdbc 包下。
以下是几个最核心、最常用的类及其所在的包:
1 核心连接类
| 包路径 | 类名 | 描述 |
|---|---|---|
com.microsoft.sqlserver.jdbc |
SQLServerDriver |
JDBC 驱动程序的实现类,在较新的驱动版本中,通常不需要显式加载它。 |
com.microsoft.sqlserver.jdbc |
SQLServerDataSource |
数据源类,用于获取数据库连接,这是一种更现代、更灵活的连接管理方式,尤其在应用服务器环境中。 |
com.microsoft.sqlserver.jdbc |
SQLServerConnection |
代表与 SQL Server 数据库的一个连接。 |
java.sql |
Connection |
JDBC API 的标准接口,SQLServerConnection 实现了这个接口。 |
2 执行 SQL 语句的类
| 包路径 | 类名 | 描述 |
|---|---|---|
java.sql |
Statement |
用于执行不带参数的静态 SQL 语句。 |
java.sql |
PreparedStatement |
强烈推荐,用于执行预编译的 SQL 语句,可以防止 SQL 注入,并且性能更好。 |
java.sql |
CallableStatement |
用于调用数据库存储过程。 |
com.microsoft.sqlserver.jdbc |
SQLServerStatement |
Statement 接口的 SQL Server 实现类。 |
com.microsoft.sqlserver.jdbc |
SQLServerPreparedStatement |
PreparedStatement 接口的 SQL Server 实现类。 |
3 处理结果的类
| 包路径 | 类名 | 描述 |
|---|---|---|
java.sql |
ResultSet |
代表 SQL 查询返回的结果集。 |
com.microsoft.sqlserver.jdbc |
SQLServerResultSet |
ResultSet 接口的 SQL Server 实现类。 |
4 其他实用类
| 包路径 | 类名 | 描述 |
|---|---|---|
com.microsoft.sqlserver.jdbc |
SQLServerException |
JDBC 驱动程序抛出的标准异常。 |
com.microsoft.sqlserver.jdbc |
SQLServerDatabaseMetaData |
提供关于数据库的整体信息,如数据库版本、支持的 SQL 语法等。 |
完整代码示例
下面是一个使用 Maven 和 PreparedStatement(最佳实践)连接 SQL Server 并执行查询的完整示例。
步骤 1: pom.xml 文件
确保你的 pom.xml 中有 SQL Server JDBC 驱动的依赖。
<project ...>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>sqlserver-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- Microsoft JDBC Driver for SQL Server -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>12.4.1.jre11</version>
</dependency>
</dependencies>
</project>
步骤 2: Java 代码 (DatabaseConnector.java)
package com.example;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DatabaseConnector {
// --- 数据库连接信息 ---
// 请根据你的实际情况修改这些值
private static final String DB_URL = "jdbc:sqlserver://localhost:1433;databaseName=YourDatabaseName;encrypt=false;trustServerCertificate=true;";
private static final String DB_USER = "your_username";
private static final String DB_PASSWORD = "your_password";
public static void main(String[] args) {
// 使用 try-with-resources 语句,确保资源在使用后自动关闭
try (Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD)) {
if (conn != null) {
System.out.println("连接成功!");
queryEmployees(conn);
}
} catch (SQLException e) {
System.err.println("连接数据库失败!");
e.printStackTrace();
}
}
/**
* 查询员工信息的示例方法
* @param conn 数据库连接
*/
private static void queryEmployees(Connection conn) {
// SQL 查询语句,使用 ? 作为占位符
String sql = "SELECT EmployeeID, FirstName, LastName FROM Employees WHERE Department = ?";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
// 设置参数,防止 SQL 注入
pstmt.setString(1, "IT"); // 第一个 ? 替换为 'IT'
// 执行查询
try (ResultSet rs = pstmt.executeQuery()) {
System.out.println("\n--- IT 部门员工列表 ---");
while (rs.next()) {
// 通过列名获取数据,更具可读性
int id = rs.getInt("EmployeeID");
String firstName = rs.getString("FirstName");
String lastName = rs.getString("LastName");
System.out.println("ID: " + id + ", 姓名: " + firstName + " " + lastName);
}
}
} catch (SQLException e) {
System.err.println("执行查询时出错!");
e.printStackTrace();
}
}
}
代码解释:
DB_URL:jdbc:sqlserver://: 协议头,表示使用 SQL Server JDBC 驱动。localhost:1433: SQL Server 服务器的地址和端口,如果你的 SQL Server 在远程,请替换为相应的 IP 地址或域名。databaseName=YourDatabaseName: 你要连接的具体数据库名。encrypt=false;trustServerCertificate=true;: 这是在本地开发环境中常用的配置,它禁用了 TLS 加密验证,简化了证书配置,在生产环境中,你应该配置正确的 SSL 证书。
DriverManager.getConnection(): 这是获取数据库连接的标准方法。try-with-resources: 这是一个非常棒的 Java 特性,它确保了Connection,PreparedStatement, 和ResultSet这些资源在代码块执行完毕后,无论是否发生异常,都会被自动关闭,避免了资源泄漏。PreparedStatement:- 我们使用 作为 SQL 语句中的参数占位符。
- 通过
pstmt.setString(1, "IT")将第一个 替换为字符串'IT'。 - 这是防止 SQL 注入攻击的最佳实践,因为它会将输入的值作为数据处理,而不是作为 SQL 命令的一部分来执行。
pstmt.executeQuery(): 执行查询并返回一个ResultSet对象。rs.next(): 遍历结果集。next()方法将光标移到下一行,如果存在下一行则返回true。rs.getString("ColumnName"): 通过列名获取VARCHAR类型的数据,使用列名比使用列索引(如rs.getString(1))更安全、更易读。
| 项目 | 说明 | |
|---|---|---|
| 核心 JAR 包 | mssql-jdbc-<version>.jar |
由微软提供,是 Java 连接 SQL Server 的必需驱动。 |
| 添加方式 | IDE手动导入 / Maven / Gradle | Maven/Gradle 是推荐方式,可以自动管理依赖版本。 |
| 核心 Java 包 | com.microsoft.sqlserver.jdbc |
包含微软实现的 JDBC 类,如 SQLServerDataSource, SQLServerConnection 等。 |
| 标准 Java 包 | java.sql |
包含 JDBC API 的标准接口,如 Connection, PreparedStatement, ResultSet 等。 |
| 最佳实践 | PreparedStatement + try-with-resources |
使用 PreparedStatement 防止 SQL 注入,使用 try-with-resources 自动管理资源。 |
希望这份详细的指南能帮助你顺利地在 Java 项目中使用 SQL Server!
