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

Java实现连接SQL Server解决方案及代码

下面展示了连接SQL Server数据库的整个流程:

  • 加载数据库驱动
  • 建立数据库连接
  • 执行SQL语句
  • 处理结果
  • 关闭连接

在连接之前,前提是确保数据库成功的下载,创建,配置好账号密码。

运行成功的代码:

import java.sql.*;public class sqlserverConnection {//驱动private static String cxDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";//连接地址private static String cxUrl = "jdbc:sqlserver://172.16.100.1:1433;databaseName=abc;encrypt=false";//用户名private static String cxUser = "abc";//用户密码:数据库的密码private static String cxPassword = "abc";public static void main(String[] args) {try{Class.forName(cxDriver);   //加载sqlserver的驱动类System.out.println("加载SQLServer驱动类成功!");}catch(ClassNotFoundException a){System.out.println("加载SQLServer驱动失败!");a.printStackTrace();}Connection dbcon=null;           //处理与特定数据库的连接try{dbcon=DriverManager.getConnection(cxUrl,cxUser,cxPassword);System.out.println("数据库连接成功!");dbcon.close();}catch(SQLException e){System.out.println("数据库连接失败!");e.printStackTrace();}}}

报错:

Exception in thread "main" java.lang.UnsupportedClassVersionError: com/microsoft/sqlserver/jdbc/SQLServerDriver has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0at java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClass(ClassLoader.java:763)at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)at java.net.URLClassLoader.access$100(URLClassLoader.java:74)at java.net.URLClassLoader$1.run(URLClassLoader.java:369)at java.net.URLClassLoader$1.run(URLClassLoader.java:363)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(URLClassLoader.java:362)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)at java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Class.java:264)at timeunit_test.sqlserverConnection.main(sqlserverConnection.java:17)

问题在于用较高版本的jdk编译的class文件在低版本的JVM上运行所导致的,通俗讲就是编译运行版本不匹配。

可惜我不是
看下jar包目录下是否存在多余的,不需要的版本,去除
我第一次jre8,jre11版本的都导入了,导致驱动加载失败
使用cmd java -version 查看java javac版本 是否都匹配
在这里插入图片描述

加载驱动成功,但是连接又失败了

com.microsoft.sqlserver.jdbc.SQLServerException: "encrypt" property is set to "true" and "trustServerCertificate" property is set to "false" but the driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption: Error: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target. ClientConnectionId:f903a939-f589-4052-89f8-580442a86a1bat com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:4026)at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1954)at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:3552)at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:3172)at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:3014)at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1836)at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1246)at java.sql.DriverManager.getConnection(DriverManager.java:664)at java.sql.DriverManager.getConnection(DriverManager.java:247)at timeunit_test.sqlserverConnection.main(sqlserverConnection.java:26)
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target...

这个问题最有效的办法是在连接地址Url后面加上encrypt=false

执行SQL语句:

Statement statement = connection.createStatement();
String sql = "SELECT * FROM mytable";
ResultSet resultSet = statement.executeQuery(sql);

上述代码中,statement对象用于执行SQL语句。sql是要执行的SQL语句,这里是一个简单的查询语句。executeQuery()方法用于执行查询语句,并返回一个ResultSet对象,用于获取查询结果。

处理结果

while (resultSet.next()) {int id = resultSet.getInt("id");String name = resultSet.getString("name");// 处理每一条查询结果
}

上述代码中,通过resultSet.next()方法判断是否还有下一条查询结果,然后使用getInt()和getString()等方法获取查询结果中的具体字段值。

关闭连接

resultSet.close();
statement.close();
connection.close();

上述代码中,分别关闭resultSet、statement和connection对象,释放相关资源。

参考大家的文档
https://blog.csdn.net/qq243920161/article/details/78971861
https://blog.csdn.net/m0_46669582/article/details/111685213
https://blog.csdn.net/qq_42759370/article/details/103350930
https://blog.csdn.net/qq_37917691/article/details/108262286
https://blog.csdn.net/Green_Hand_is_me/article/details/122272151
https://blog.csdn.net/qq_45835014/article/details/128268932
https://blog.csdn.net/qq_51391437/article/details/121051234

相关文章:

Java实现连接SQL Server解决方案及代码

下面展示了连接SQL Server数据库的整个流程: 加载数据库驱动建立数据库连接执行SQL语句处理结果关闭连接 在连接之前,前提是确保数据库成功的下载,创建,配置好账号密码。 运行成功的代码: import java.sql.*;publi…...

如何用 JMeter 编写性能测试脚本?

Apache JMeter 应该是应用最广泛的性能测试工具。怎么用 JMeter 编写性能测试脚本? 1. 编写 HTTP 性能测试脚本 STEP 1. 添加 HTTP 请求 img STEP 2. 了解配置信息 HTTP 请求各项信息说明(以 JMeter 5.1 为例)。 如下图所示:…...

vue3+vite在线预览pdf

效果图 代码 <template><div class"pdf-preview"><div class"pdf-wrap"><vue-pdf-embed :source"state.source" :style"scale" class"vue-pdf-embed" :page"state.pageNum" /></div…...

Python深度学习实战-基于Sequential方法搭建BP神经网络实现分类任务(附源码和实现效果)

实现功能 第一步&#xff1a;导入模块&#xff1a;import tensorflow as tf 第二步&#xff1a;制定输入网络的训练集和测试集 第三步&#xff1a;搭建网络结构&#xff1a;tf.keras.models.Sequential() 第四步&#xff1a;配置训练方法&#xff1a;model.compile()&#x…...

【前端】Webpack5中Html和CSS的压缩打包

1.Webpack5简介 1.1.Webpack简介 &#xff08;1&#xff09;webpack的发展历程 2012.3—webpack&#xff08;问世&#xff09; 2014.2—webpack1 2016.12—webpack2 2017.6—webpack3 2018.2—webpack4 2020.10—webpack5&#xff08;要求node版本10.13&#xff09; &a…...

postman接收后端返回的文件流并自动下载

不要点send&#xff0c;点send and download&#xff0c;postman接受完文件流会弹出文件保存框让你选择保存路径...

谈谈Net-SNMP软件

Net-SNMP是一个开源的SNMP软件套件&#xff0c;它提供了SNMP代理&#xff08;snmpd&#xff09;和SNMP工具&#xff08;如snmpget、snmpwalk等&#xff09;&#xff0c;可以用于监控和管理网络设备。 Net-SNMP最初是从UC Davis的SNMP软件衍生而来&#xff0c;现在已经成为广泛…...

前端对普通数字数组排序示例

1. arr.sort(fn) // 升序排序arr.sort((a, b) > a - b);// 降序排序arr.sort((a, b) > b - a); 2. 冒泡排序 冒泡排序-升序原理: eg: [1, 6, 7, 9, 10, 3, 4, 5, 2] 1) 先遍历第一遍数组, 前一个数字大于后一个数字, 就交换位置, 最后最大值10放在数组的最后, 此时是…...

SQL server中:常见问题汇总(如:修改表时不允许修改表结构、将截断字符串或二进制数据等)

SQL server中&#xff1a;常见问题汇总 1.修改表时提示&#xff1a;不允许修改表结构步骤图例注意 2.将截断字符串或二进制数据。3.在将 varchar 值 null 转换成数据类型 int 时失败。4.插入insert 、更新update、删除drop数据失败&#xff0c;主外键FOREIGN KEY 冲突5.列不允许…...

无线通信中CSI的含义

在无线通信中&#xff0c;CSI代表"Channel State Information"&#xff0c;即信道状态信息。CSI是一种关键的信息&#xff0c;用于评估和描述通信信道的特性&#xff0c;以帮助发送器和接收器在通信过程中做出智能的调整和决策。 CSI包括有关通信信道的以下信息&…...

如何一键核实验证身份证的真伪?

据报道&#xff0c;今年10月10日&#xff0c;广东省佛山市朱某因生活琐事与丈夫发生争吵&#xff0c;民警发现她的身份证有问题。 在民警打算进一步了解情况&#xff0c;查看夫妻二人的身份证件时&#xff0c;朱某的身份证引起了民警的注意。这张身份证表面很光滑&#xff0c;…...

冒泡排序:了解原理与实现

目录 原理 实现 性能分析 结论 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单但效率较低的排序算法。它重复地比较相邻的元素并交换位置&#xff0c;直到整个序列有序为止。虽然冒泡排序的时间复杂度较高&#xff0c;但在小规模数据集上仍然具有一定的实际应用价…...

springboot maven项目环境搭建idea

springboot maven项目环境搭建idea 文章目录 springboot maven项目环境搭建idea用到的软件idea下载和安装java下载和安装maven下载和安装安装maven添加JAVA_HOME路径&#xff0c;增加JRE环境修改conf/settings.xml&#xff0c;请参考以下 项目idea配置打开现有项目run或build打…...

vue3检测是手机还是pc端,监测视图窗口变化

1.超小屏幕&#xff08;手机&#xff09; 768px以下 2.小屏设备&#xff08;平板&#xff09; 768px-992px 3.中等屏幕&#xff08;旧式电脑&#xff09; 992px-1200px 4.大屏设备&#xff08;现代电脑&#xff09; 1200px以上 <script setup name"welcome"> i…...

B - Magical Subsequence (CCPC2021哈尔滨)

思路&#xff1a; &#xff08;1&#xff09;问题&#xff1a;对于已知数组&#xff0c;每组依次选两个&#xff0c;尽量选更多组&#xff0c;选的每组和相等&#xff1b;&#xff08;假定和为x) &#xff08;2&#xff09;于是问题拆分为两步&#xff0c; x是多少x确定时&a…...

Leetcode刷题详解——x的平方根

1. 题目链接&#xff1a;69. x 的平方根 2. 题目描述&#xff1a; 给你一个非负整数 x &#xff0c;计算并返回 x 的 算术平方根 。 由于返回类型是整数&#xff0c;结果只保留 整数部分 &#xff0c;小数部分将被 舍去 。 **注意&#xff1a;**不允许使用任何内置指数函数和…...

windows安装docker,解决require wsl 2问题

想在windows上安装桌面版docker&#xff0c;上官网下载了安装包&#xff0c;安装完后&#xff0c;启动报错&#xff0c;忘了截图了。 大概意思就是require wsl 2。 于是就是docker FAQ中找相关问题解决方案&#xff0c;点&#xff0c;点&#xff0c;点然后就点到微软了。 ws…...

建立复数类

目录 程序设计 程序分析 系列文章 在课堂示例的基础上,显示复数时如果虚部为0时只显示实部,实部为0时只显示虚部,虚部为负数时以a-bi的形式显示,并为复数类增加减法功能。 程序设计 Work4类: package work;import java.util.Scanner;public class Work4 {private in…...

docker部署prometheus+grafana服务器监控(三) - 配置grafana

查看 prometheus 访问 http://ip:9090/targets&#xff0c;效果如下&#xff0c;上面我们通过 node_exporter 收集的节点状态是 up 状态。 配置 Grafana 访问 http://ip:3000&#xff0c;登录 Grafana&#xff0c;默认的账号密码是 admin:admin&#xff0c;首次登录需要修改…...

面试题:说一下加密后的数据如何进行模糊查询?

文章目录 正文如何对加密后的数据进行模糊查询沙雕做法沙雕一沙雕二 常规做法常规一常规二超神做法 总结 正文 我们知道加密后的数据对模糊查询不是很友好&#xff0c;本篇就针对加密数据模糊查询这个问题来展开讲一讲实现的思路&#xff0c;希望对大家有所启发。 为了数据安…...

智力能效:Token之上的竞争

AI软件竞争的本质是智力能效的竞争。 编者按 2025 年初, Anthropic 宣布 Claude API的价格比GPT-4高出50%。原本以为会出现的大量客户流失却在六个月后呈现出截然相反的走向&#xff1a;Claude在企业市场的采用率不仅没有下降&#xff0c;反而上升了。 过去两年&#xff0c;无数…...

Redis专题(一)

1. 主从部署主从复制主要⽤于实现数据的冗余备份和读分担&#xff0c;并不是真正的高可用。一个主节点&#xff0c;一个或者多个从节点。同步数据的方向&#xff1a;单向 &#xff0c;只能主节点到从节点。作用&#xff1a;数据冗余&#xff1a;除了数据持久化之外的一种数据冗…...

Oracle VM VirtualBox快速上手指南——Win10环境下的下载与安装详解

1. 为什么选择VirtualBox搭建虚拟环境&#xff1f; 作为一个在虚拟化领域摸爬滚打多年的老手&#xff0c;我测试过市面上几乎所有主流虚拟机软件。对于Windows 10用户来说&#xff0c;Oracle VM VirtualBox绝对是入门虚拟化的首选利器。它最大的优势就是完全免费开源&#xff0…...

OpenClaw极简配置法:千问3.5-35B-A3B-FP8快速接入指南

OpenClaw极简配置法&#xff1a;千问3.5-35B-A3B-FP8快速接入指南 1. 为什么选择极简配置法 上周我在测试OpenClaw对接本地大模型时&#xff0c;被冗长的onboard向导折磨得够呛——光是模型选择、渠道配置、技能安装就花了半小时。直到发现直接修改openclaw.json的baseUrl字段…...

国产视频会议核心技术解析:架构、特性与全场景落地

在数字化协同办公发展与信息安全防护需求的双重推动下&#xff0c;视频会议国产化已经从政策导向阶段迈入技术落地的成熟期&#xff0c;其核心价值集中体现在自主可控、安全可靠、全场景适配三大维度。依托硬件基础、编解码技术、传输优化、安全防护以及生态兼容的全链条技术创…...

L293D电机驱动库:嵌入式直流电机控制实战指南

1. L293D电机驱动库深度解析&#xff1a;面向嵌入式工程师的工程实践指南L293D是TI&#xff08;德州仪器&#xff09;推出的双H桥直流电机驱动芯片&#xff0c;广泛应用于Arduino、ESP32等微控制器平台的中小功率直流电机控制场景。本库并非简单封装GPIO操作&#xff0c;而是针…...

ORA-12518:Oracle 监听程序无法分发客户端连接原因及解决方法

本文主要讲解ORA-12518:Oracle监听程序无法分发客户端连接的原因分析及解决方法。问题描述数据中台的同步任务有时会报错如下&#xff1a;ORA-12518, TNS:listener could not hand off client connection。意即Oracle监听程序无法分发客户端连接&#xff0c;原因分析只是有时候…...

C语言完美演绎6-18

/* 范例&#xff1a;6-18 */#include <stdio.h> #include <conio.h>int main(){int a;printf("请输入你的分数(0-100)");scanf("%d",&a);if(a>0){if(a<100){ printf("你输入的分数是%d",a); }else{ printf("你输入的…...

探索p5.js Web Editor:重构创意编程体验的开发平台

探索p5.js Web Editor&#xff1a;重构创意编程体验的开发平台 【免费下载链接】p5.js-web-editor The p5.js Editor is a website for creating p5.js sketches, with a focus on making coding accessible and inclusive for artists, designers, educators, beginners, and …...

后台管理系统布局设计指南:从架构到实践的全方位解析

后台管理系统布局设计指南&#xff1a;从架构到实践的全方位解析 【免费下载链接】vue3-element-admin &#x1f525;基于 Vue 3 Vite 7 TypeScript element-plus 构建的后台管理前端模板&#xff08;配套后端源码&#xff09;&#xff0c;vue-element-admin 的 vue3 版本。 …...