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.rhkb.cn/news/501681.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Ubuntu 18.04.6 LTS安装OpenFace流程

一、修改配置:将gcc8&#xff0c;g8作为默认选项 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 100 sudo update-alternatives --config gcc 选择版本&#xff0c;再查看gcc --version sudo update-alternatives --install /usr/bin/g g /usr/bin/g-…

typescript安装后仍然不能使用tsc,如何解决

1.全局安装 npm i typescript -g 2.发现仍然不行 解决方法&#xff1a; C:\Users\你的用户名\AppData\Roaming\npm解决办法&#xff1a; 1.确定对应的文件下载了 我们发现typescript是下载了的 2.设置环境变量的path 路径为typescript下的npm 3.cmd运行

硬件-射频-PCB-常见天线分类-ESP32实例

文章目录 一&#xff1a;常见天线1.1 PCB天线①蓝牙模块的蛇形走线-天线②倒F天线-IFA&#xff1a;③蛇形倒F天线-MIFA④立体的倒F天线-PIFA 1.2 实例示意图1.21 对数周期天线(LPDA):1.22 2.4GHZ的八木天线&#xff1a;1.23 陶瓷天线&#xff1a;1.24 外接天线&#xff1a; 二&…

PCA降维算法详细推导

关于一个小小的PCA的推导 文章目录 关于一个小小的PCA的推导1 谱分解 (spectral decomposition)2 奇异矩阵(singular matrix)3 酉相似(unitary similarity)4 酉矩阵5 共轭变换6 酉等价7 矩阵的迹的计算以及PCA算法推导8 幂等矩阵(idempotent matrix)9 Von Neumanns 迹不等式 [w…

25.1.3

java数组&#xff1a; dataType[] arrayRefVar //推荐写法 //int[] mylist //或 dataType arrayRefVar[] //int mylist[]创建数组对象&#xff1a; arrayRefVar new dataType[arraySize]; dataType[] arrayRefVar new dataType[arraySize];for-each循环&#xff1a; jav…

音频进阶学习九——离散时间傅里叶变换DTFT

文章目录 前言一、DTFT的解释1.DTFT公式2.DTFT右边释义1&#xff09; 复指数 e − j ω n e^{-j\omega n} e−jωn2&#xff09;序列与复指数相乘 x [ n ] ∗ e − j ω n x[n]*e^{-j\omega n} x[n]∗e−jωn复指数序列复数的共轭正交正交集 3&#xff09;复指数序列求和 3.DTF…

【保姆级】sql注入之堆叠注入

一、堆叠注入的原理 mysql数据库sql语句的默认结束符是以";"号结尾&#xff0c;在执行多条sql语句时就要使用结束符隔 开,而堆叠注入其实就是通过结束符来执行多条sql语句 比如我们在mysql的命令行界面执行一条查询语句,这时语句的结尾必须加上分号结束 select * fr…

我的桌面 1.9.75 | 个性化定制手机桌面,丰富的小组件和主题

我的桌面iScreen是一款万能桌面小组件APP&#xff0c;提供各种高颜值桌面主题与创意小组件自由组合。支持X面板、照片、待办清单、时钟、日历等实用有趣的小组件。拥有超过500种小组件供选择&#xff0c;包括灵动面板、滚动相册等&#xff0c;搭配300多种精美主题和高清壁纸&am…

汽车燃油软件标定测试

油箱测试 确定油箱的参数&#xff1a; 总容积&#xff0c;额定容积&#xff0c;不可用容积等。油泵测试&#xff08;静态&#xff09; 分为加油测试&#xff0c;减油测试&#xff0c;1L或者500ml增减&#xff1b; 分别测试油泵的阻值输出&#xff0c;类似&#xff1a; 油量 阻…

07-ArcGIS For JavaScript--隐藏参数qualitySettings(memory和lod控制)

目录 1、综述2、sceneview.qualitySettings2.1、sceneview.qualitySettings.memoryLimit2.2、lodFactor2.3 additionalCacheMemory 3、结论 1、综述 先上重点&#xff0c;SceneView.qualitySettings为隐藏对象参数&#xff0c;该对象的memoryLimit和lodFactor等值&#xff0c;…

信息科技伦理与道德1:研究方法

1 问题描述 1.1 讨论&#xff1f; 请挑一项信息技术&#xff0c;谈一谈为什么认为他是道德的/不道德的&#xff0c;或者根据使用场景才能判断是否道德。判断的依据是什么&#xff08;自身的道德准则&#xff09;&#xff1f;为什么你觉得你的道德准则是合理的&#xff0c;其他…

交换机关于环路、接口绑定、链路聚合的相关知识

文章目录 1、对交换机SW-1进行配置&#xff0c;仅允许Host-1通过Ethernet0/0/1接口与Host-3和Host-4通信&#xff0c;Host-2无法与其他主机通信。2、关闭生成树协议&#xff0c;验证环路造成的影响3、关闭生成树协议通过链路聚合实现两条链路正常通信并提高链路可靠性。 内容包…

QEMU网络配置简介

本文简单介绍下qemu虚拟机网络的几种配置方式。 通过QEMU的支持&#xff0c;常见的可以实现以下4种网络形式&#xff1a; 基于网桥&#xff08;bridge&#xff09;的虚拟网络。基于NAT&#xff08;Network Addresss Translation&#xff09;的虚拟网络。QEMU内置的用户模式网…

(二)当人工智能是一个函数,函数形式怎么选择?ChatGPT的函数又是什么?

在上一篇文章中&#xff0c;我们通过二次函数的例子&#xff0c;讲解了如何训练人工智能。今天&#xff0c;让我们进一步探讨&#xff1a;面对不同的实际问题&#xff0c;应该如何选择合适的函数形式&#xff1f; 一、广告推荐系统中的函数选择 1. 业务目标 想象一下&#x…

CentOS — 目录管理

文章目录 一、目录结构二、切换目录三、查看目录四、创建目录五、复制目录六、剪切目录七、删除目录 目录也是一种文件。 蓝色目录&#xff0c;绿色可执行文件&#xff0c;红色压缩文件&#xff0c;浅蓝色链接文件&#xff0c;灰色其它文件&#xff0c; 点开头的是隐藏文件&…

2025加密风云:行业变革与未来趋势全景透视

引言 2024年是加密行业发展历程中的重要一年&#xff0c;诸多事件和趋势为未来的发展奠定了基础。随着全球政策环境的变化、技术的不断进步以及市场参与者的多样化&#xff0c;加密行业在2025年将迎来新的转型与挑战。这篇文章将从政策、技术、市场、应用以及社会影响等多个角…

什么是.net framework,什么是.net core,什么是.net5~8,版本对应关系

我不知道有多少人和我一样&#xff0c;没学习过.netCore&#xff0c;想要学习&#xff0c;但是版本号太多就蒙了&#xff0c;不知道学什么了&#xff0c;这里解释下各个版本的关系 我们一般开始学习微软的时候&#xff0c;都是开始学习的.netframework&#xff0c;常用的就是4…

tcpdump指南(1)

大家读完觉得有意义记得关注和点赞&#xff01;&#xff01;&#xff01; tcpdump是一种在网络上转储流量的网络工具。 这篇文章服务器作为一些常用命令的指南。如需完整指南&#xff0c; 请参阅手册页&#xff0c;或在 Linux 计算机上。man tcpdump 1 基本选项 帮助摘要&#…

如何利用 ClickHouse 实现高级分析:MySQL 到 ClickHouse 实时数据同步指南

在数据驱动的时代&#xff0c;企业必须依靠先进的数据分析能力来提升竞争力。随着数据量的激增和业务需求的复杂化&#xff0c;传统的关系型数据库已经无法满足高效处理和实时分析的需求。ClickHouse 作为一款高性能的列式数据库&#xff0c;凭借其卓越的查询性能和可扩展性&am…

UniApp | 从入门到精通:开启全平台开发的大门

UniApp | 从入门到精通:开启全平台开发的大门 一、前言二、Uniapp 基础入门2.1 什么是 Uniapp2.2 开发环境搭建三、Uniapp 核心语法与组件3.1 模板语法3.2 组件使用四、页面路由与导航4.1 路由配置4.2 导航方法五、数据请求与处理5.1 发起请求5.2 数据缓存六、样式与布局6.1 样…