杰瑞科技汇

SQLServer与Java连接时需注意哪些配置?

JDBC

Java 通过 JDBC (Java Database Connectivity) 来连接和操作数据库,JDBC 是一套 Java API,允许 Java 程序执行 SQL 语句,它本身只是一个规范(接口),具体的实现由各个数据库厂商提供,我们称之为 JDBC Driver (驱动)

SQLServer与Java连接时需注意哪些配置?-图1
(图片来源网络,侵删)

连接 SQL Server 的步骤通常如下:

  1. 获取 JDBC Driver:下载 Microsoft 提供的 SQL Server JDBC Driver。
  2. 配置项目:将驱动 JAR 包添加到您的项目中。
  3. 加载驱动:在代码中加载驱动类。
  4. 建立连接:使用 DriverManager 获取数据库连接对象。
  5. 创建执行对象:通过连接对象创建 StatementPreparedStatement
  6. 执行 SQL:执行查询或更新操作。
  7. 处理结果:如果是查询,遍历 ResultSet 获取数据。
  8. 关闭资源:按顺序关闭 ResultSet, Statement, Connection

使用 Maven (推荐)

这是目前最主流、最便捷的项目管理方式,Maven 会自动帮您下载和管理依赖。

添加 Maven 依赖

在您的 pom.xml 文件中,添加 Microsoft 提供的官方 JDBC Driver 依赖。推荐使用最新版本

<dependencies>
    <!-- Microsoft JDBC Driver for SQL Server -->
    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
        <!-- 请访问 Maven Central 查找最新版本 -->
        <version>11.2.1.jre8</version> 
        <!-- 根据你的JDK版本选择,jre11, jre17 -->
    </dependency>
</dependencies>

Java 连接代码示例

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SqlServerMavenExample {
    // 数据库连接信息 - 请根据您的实际情况修改
    private static final String DB_URL = "jdbc:sqlserver://localhost:1433;databaseName=YourDatabase;encrypt=true;trustServerCertificate=true;";
    private static final String USER = "your_username";
    private static final String PASS = "your_password";
    public static void main(String[] args) {
        // try-with-resources 语句,可以自动关闭资源
        try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery("SELECT 'Hello, SQL Server!' AS message")) {
            // 检查连接是否成功
            if (conn != null) {
                System.out.println("连接成功!");
            }
            // 处理结果集
            while (rs.next()) {
                // 通过列名获取数据,更安全
                String message = rs.getString("message");
                System.out.println("从数据库获取到的消息: " + message);
            }
        } catch (SQLException e) {
            System.err.println("数据库连接或查询失败!");
            e.printStackTrace();
        }
    }
}

手动下载 JAR 包

如果您不使用 Maven,也可以手动管理依赖。

SQLServer与Java连接时需注意哪些配置?-图2
(图片来源网络,侵删)

下载 JDBC Driver

访问 Microsoft 官方下载页面:Microsoft JDBC Driver for SQL Server

选择与您的 Java Development Kit (JDK) 版本匹配的驱动下载,下载后会得到一个 .jar 文件(mssql-jdbc-11.2.1.jre8.jar)。

配置项目

您需要将下载的 .jar 文件添加到项目的类路径中。

  • 在 IDE (如 IntelliJ IDEA 或 Eclipse) 中:

    SQLServer与Java连接时需注意哪些配置?-图3
    (图片来源网络,侵删)
    1. 右键点击您的项目。
    2. 选择 Open Module Settings (IntelliJ) 或 Build Path -> Configure Build Path (Eclipse)。
    3. 找到 LibrariesDependencies 选项卡。
    4. 点击 号,选择 JARs or directories...,然后找到并添加您下载的 .jar 文件。
  • 在命令行编译运行时: 使用 -cp-classpath 参数来指定类路径。

    # 编译
    javac -cp ".;C:\path\to\your\mssql-jdbc-11.2.1.jre8.jar" YourJavaFile.java
    # 运行
    java -cp ".;C:\path\to\your\mssql-jdbc-11.2.1.jre8.jar" YourJavaFile

    注意: Windows 系统使用 分隔路径,Linux/macOS 系统使用 。

Java 连接代码示例

代码与 Maven 方式中的示例完全相同,因为 JDBC API 是标准化的。


连接字符串详解

连接字符串是连接数据库的关键,下面解释一下示例中各部分的含义:

jdbc:sqlserver://localhost:1433;databaseName=YourDatabase;encrypt=true;trustServerCertificate=true;

  • jdbc:sqlserver://: JDBC 协定和驱动名称。
  • localhost: SQL Server 服务器的地址,如果是远程服务器,请替换为 IP 地址或域名(如 168.1.100your-server.com)。
  • 1433: SQL Server 的默认端口,如果您的 SQL Server 使用了不同端口,请相应修改。
  • ;databaseName=YourDatabase: 要连接的数据库的名称。
  • ;encrypt=true;: 启用 TLS 加密,这是现代 SQL Server 的推荐做法。
  • ;trustServerCertificate=true;: 仅用于开发环境,它告诉驱动程序信任服务器提供的证书,而不进行验证,在生产环境中,您应该配置正确的 CA 证书,如果您的 SQL Server 是本地开发实例,并且使用了自签名证书,这个参数可以避免复杂的证书配置问题。

其他常用参数:

  • user=your_username: 用户名。
  • password=your_password: 密码。
  • integratedSecurity=true: 使用 Windows 身份验证(集成安全),如果使用此参数,则不需要提供 userpassword,连接字符串会变为:jdbc:sqlserver://localhost;databaseName=YourDatabase;integratedSecurity=true;

最佳实践:使用连接池

直接使用 DriverManager 获取连接在应用频繁创建和关闭连接时效率很低,且会消耗大量资源。在生产环境中,强烈建议使用连接池

连接池在应用启动时创建一组数据库连接,并复用这些连接,从而大大提高性能。

使用 HikariCP (目前性能最好的连接池)

  1. 添加 Maven 依赖

    <dependencies>
        <!-- SQL Server JDBC Driver -->
        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
            <version>11.2.1.jre8</version>
        </dependency>
        <!-- HikariCP 连接池 -->
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <version>5.0.1</version>
        </dependency>
    </dependencies>
  2. Java 连接池示例代码

    import com.zaxxer.hikari.HikariConfig;
    import com.zaxxer.hikari.HikariDataSource;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.Statement;
    public class SqlServerWithHikariExample {
        // 创建一个静态的连接池数据源,整个应用生命周期内只需创建一次
        private static HikariDataSource dataSource;
        static {
            HikariConfig config = new HikariConfig();
            config.setJdbcUrl("jdbc:sqlserver://localhost:1433;databaseName=YourDatabase;encrypt=true;trustServerCertificate=true;");
            config.setUsername("your_username");
            config.setPassword("your_password");
            // 连接池配置 (可以根据需要调整)
            config.addDataSourceProperty("cachePrepStmts", "true");
            config.addDataSourceProperty("prepStmtCacheSize", "250");
            config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
            config.setMaximumPoolSize(10); // 最大连接数
            config.setMinimumIdle(5);      // 最小空闲连接数
            config.setConnectionTimeout(30000); // 连接超时时间 (毫秒)
            dataSource = new HikariDataSource(config);
        }
        public static void main(String[] args) {
            // 从连接池中获取一个连接
            try (Connection conn = dataSource.getConnection();
                 Statement stmt = conn.createStatement();
                 ResultSet rs = stmt.executeQuery("SELECT 'Connection from HikariCP!' AS message")) {
                System.out.println("从连接池成功获取连接!");
                while (rs.next()) {
                    System.out.println("消息: " + rs.getString("message"));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            // 注意:通常在应用关闭时才需要关闭整个连接池
            // dataSource.close();
        }
    }
方式 优点 缺点 适用场景
Maven 依赖管理自动化,版本控制方便,团队协作首选 需要搭建 Maven 环境 几乎所有现代 Java 项目
手动 JAR 简单直接,无构建工具依赖 需要手动管理 JAR,更新麻烦 小型项目、快速原型、教学
连接池 高性能,高并发,资源复用 配置稍复杂 所有生产环境应用

对于新项目,强烈推荐使用 Maven + HikariCP 的组合,这是目前 Java 应用连接数据库最稳定、最高效的方案。

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