杰瑞科技汇

Java连接SQLServer包怎么选?

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

Java连接SQLServer包怎么选?-图1
(图片来源网络,侵删)
  1. Java Archive (JAR) 包:这是实际的文件,你需要将其添加到你的项目中,才能让 Java 代码能够与 SQL Server 通信。
  2. 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 包。

Java连接SQLServer包怎么选?-图2
(图片来源网络,侵删)

2 如何将 JAR 包添加到项目中

根据你使用的开发工具或构建工具,有不同的方法:

A. 对于使用 IDE (如 IntelliJ IDEA, Eclipse) 的开发者:

  1. IntelliJ IDEA:

    • 打开你的项目。
    • 进入 File -> Project Structure -> Modules -> Dependencies
    • 点击 号,选择 JARs or directories...
    • 找到你刚刚下载并解压的 mssql-jdbc-<version>.jar 文件,点击 OK
    • 确保它出现在依赖列表中。
  2. Eclipse:

    Java连接SQLServer包怎么选?-图3
    (图片来源网络,侵删)
    • 右键点击你的项目 -> 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.gradlebuild.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 语法等。

完整代码示例

下面是一个使用 MavenPreparedStatement(最佳实践)连接 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();
        }
    }
}

代码解释:

  1. DB_URL:
    • jdbc:sqlserver://: 协议头,表示使用 SQL Server JDBC 驱动。
    • localhost:1433: SQL Server 服务器的地址和端口,如果你的 SQL Server 在远程,请替换为相应的 IP 地址或域名。
    • databaseName=YourDatabaseName: 你要连接的具体数据库名。
    • encrypt=false;trustServerCertificate=true;: 这是在本地开发环境中常用的配置,它禁用了 TLS 加密验证,简化了证书配置,在生产环境中,你应该配置正确的 SSL 证书。
  2. DriverManager.getConnection(): 这是获取数据库连接的标准方法。
  3. try-with-resources: 这是一个非常棒的 Java 特性,它确保了 Connection, PreparedStatement, 和 ResultSet 这些资源在代码块执行完毕后,无论是否发生异常,都会被自动关闭,避免了资源泄漏。
  4. PreparedStatement:
    • 我们使用 作为 SQL 语句中的参数占位符。
    • 通过 pstmt.setString(1, "IT") 将第一个 替换为字符串 'IT'
    • 这是防止 SQL 注入攻击的最佳实践,因为它会将输入的值作为数据处理,而不是作为 SQL 命令的一部分来执行。
  5. pstmt.executeQuery(): 执行查询并返回一个 ResultSet 对象。
  6. rs.next(): 遍历结果集。next() 方法将光标移到下一行,如果存在下一行则返回 true
  7. 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!

分享:
扫描分享到社交APP
上一篇
下一篇