当前位置: 首页 > article >正文

Maven项目集成SQL Server的完整教程:从驱动配置到封装优化

前言

在最近的系统对接过程中,由于对方团队不熟悉技术,最终选择直接提供 SQL Server 视图。本文详细记录了使用 Maven 集成 SQL Server 驱动的过程,以及从配置到查询的各个关键步骤,还包括注意事项与常见问题,希望对需要快速搭建 SQL Server环境的开发者有所帮助。


一、准备工作(了解SQL Server)

1. 什么是 SQL Server?

SQL Server 是微软开发的一款关系型数据库管理系统(RDBMS)。它用于存储、管理和检索数据,广泛应用于企业级应用和数据分析场景。

2. SQL Server 的核心特点

  • 关系型数据库:基于关系模型设计,支持结构化查询语言(SQL)。
  • 跨平台支持:不仅支持 Windows,也可运行在 Linux 和 Docker 环境中。
  • 高性能与高可用性:拥有强大的查询优化器、事务支持和 Always On 技术。
  • 商业智能功能(BI):内置 SSRS、SSIS 和 SSAS,助力数据分析与决策。
  • 安全性:支持多种安全特性,如数据加密、用户权限控制等。

3. SQL Server 与 MySQL 对比分析

对比项SQL ServerMySQL
开发商微软(闭源)Oracle(开源)
平台支持Windows、Linux、DockerWindows、Linux、macOS
商业模式商业为主,有免费版本免费开源+收费企业版
性能复杂事务性能更强适合轻量级应用
高可用性Always On、数据库镜像支持配置复杂的主从复制
BI 支持内置 BI 工具依赖第三方工具
学习成本

通过以上对比,可以看到 SQL Server 更适合企业级复杂业务场景,而 MySQL 更适用于轻量级 Web 应用开发。


二、如何集成 SQL Server 驱动

1. Maven 项目依赖配置

pom.xml 中添加以下依赖:

<!-- sqlserver jdbc驱动 -->
<dependency>
  <groupId>com.microsoft.sqlserver</groupId>
  <artifactId>mssql-jdbc</artifactId>
  <!-- 根据 JDK 版本选择合适的依赖 -->
  <version>12.8.1.jre11</version> 
</dependency>

提示:如果使用 JDK 8,请将 jre11 替换为 jre8。本文基于 JDK 21,因此使用 jre11

2. 数据库连接参数设置

在 Java 代码中配置连接 SQL Server 的参数:

private static final String URL = "jdbc:sqlserver://127.0.0.1:46618;databaseName=databaseName;encrypt=true;trustServerCertificate=true;";
private static final String USER = "user";
private static final String PASSWORD = "123456";

说明

  • jdbc:sqlserver://:使用 SQL Server 的 JDBC 驱动(Maven中已引入)。
  • 127.0.0.1:服务器地址(修改为对应的服务器地址)。
  • :46618:端口号(默认 1433)。
  • databaseName=databaseName:要连接的数据库名称(修改为对应的数据库)。
  • encrypt=truetrustServerCertificate=true:启用加密并信任服务器证书(如果没有该配置,需要手动验证)。

3. 注册驱动并连接数据库

以下代码展示了如何注册驱动、建立连接并执行查询:

try {
    // 注册驱动(防止自动装载错误)
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    // 获取连接
    Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
    Statement stmt = conn.createStatement();
    
    // 查询语句
    String sql = "SELECT * FROM dbo.table";
    ResultSet rs = stmt.executeQuery(sql);
    
    // 遍历查询结果
    while (rs.next()) {
    	// 输出第一列数据
        System.out.println(rs.getString(1)); 
    }
} catch (Exception e) {
    e.printStackTrace(); 
    // 错误处理
}

注意:确保驱动已正确加载,查询结果需根据实际需求封装处理。


4. 测试查询结果

连接成功后,可以使用以下代码执行 SQL 查询:

String sql = "SELECT * FROM dbo.table";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);

while (rs.next()) {
	// 输出第一列数据
    System.out.println("列值:" + rs.getString(1)); 
}

三、代码优化与封装

为了提高代码的复用性和可维护性,可以将常用的操作封装成工具类:

public class SqlServerUtil {
    private static final String URL = "...";
    private static final String USER = "...";
    private static final String PASSWORD = "...";

    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(URL, USER, PASSWORD);
    }

    public static JSONArray executeQuery(String query) {
        JSONArray result = new JSONArray();
        try (Connection conn = getConnection();
             Statement stmt = conn.createStatement();
             ResultSet rs = stmt.executeQuery(query)) {
            while (rs.next()) {
                JSONObject row = new JSONObject();
                int columnCount = rs.getMetaData().getColumnCount();
                for (int i = 1; i <= columnCount; i++) {
                    row.put(rs.getMetaData().getColumnName(i), rs.getObject(i));
                }
                result.add(row);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return result;
    }
}

此工具类支持查询结果的 JSON 格式化输出,方便前端或其他服务使用。


结语

通过本文,您可以快速集成 SQL Server 驱动并实现基础的查询操作。在生产环境中,还可以进一步优化代码,例如引入连接池(如HikariCP)、实现高级加密等。

“如果此文章对您有帮助💪,帮我点个赞👍,感激不尽🤝!”


http://www.kler.cn/a/465334.html

相关文章:

  • 形象地理解UE4中的数据结构 TLinkedListBase
  • pandas-栗子
  • 爬虫的工作原理
  • DATACOM-DHCP-复习-实验
  • Java实现自动化生成SQL COALESCE表达式
  • 以太网协议和LWIP协议详解
  • Unity小白工作心得(无限记录)
  • uniapp中使用ruoyiPlus中的加密使用(crypto-js)
  • es 3期 第19节-运用异步机制执行重度查询
  • 面向对象三大特征之一——继承super
  • Sentinel的源码学习记录
  • 服务器主机网络测试命令
  • 2024 年终总结
  • 数据篇---用python创建想要的xml
  • [python SQLAlchemy数据库操作入门]-21.SQLAlchemy Session生命周期管理:保持数据持久化
  • 网络安全 | 防护层次:从物理到应用的多重保障
  • 【2025年最新】OpenWrt 更换国内源的指南(图形界面版)
  • C# OpenCV机器视觉:非刚性物体跟踪
  • 算法基础五:归并排序
  • 边沿检测电路漏检原因分析
  • Ubuntu--安装搜狗输入法
  • pip下载包出现SSLError
  • 面试提问:Redis为什么快?
  • 使用MediaPipe Face Mesh 面部动作检测
  • ElasticSearch备考 -- 整体脉络梳理
  • 【SQL】进阶知识 -- SQL创建表的几种方法