JDBC是Java DateBase Connectivity的简写,翻译过来就是java连接数据库,或者更通俗地说就是java语言操作数据库。JDBC的本质其实是官方定义的一套操作所有关系型数据库的规则,也就是接口。
微软官方jdbc下载地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=11774
下载之后解压到相应位置,找到Microsoft JDBC Driver 6.0 for SQL Server\sqljdbc_6.0\chs\jre8\sqljdbc42.jar包,我将该包放到了D:\sqljdbc文件夹中,方便添加。
配置系统环境变量,将该包位置添加到环境变量CLASSPATH中
打开Sql Server配置管理器
这里我使用的是SQLEXPRESS的协议
启用TCP/IP和NamedPipes,并设置TCP/IP属性,改IP1地址为127.0.0.1,并启用所有IP
设置IPALL的TCP端口为1433(一般默认使用1433端口)
默认端口可在客户端协议中进行修改
设置完成后需要重启该协议才会生效
注意,MSSQLSERVER启动时会导致SQLEXPRESS启动失败。
使用SQLEXPRESS服务器,通过Windows身份验证进入
设置登录名,取消强制实施密码策略
启用登录名,并授权连接数据库
在属性中设置安全性,开启双模式身份验证
重启SQL Server客户端后进行登录测试
sqljdbc6.0,需要java jdk版本低于9,这里建议使用jdk8
jdk8官网下载地址:Java Downloads | Oracle
添加依赖sqljdbc42.jar
执行代码进行测试
import java.sql.*; public class Test { public static void main(String[] args) { String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=master"; String userName = "sa"; String userPwd = "123456"; Connection dbConn = null; try { // 注册驱动 Class.forName(driverName); // 获取数据库连接 dbConn = DriverManager.getConnection(dbURL, userName, userPwd); System.out.println("连接数据库成功"); } catch (Exception e) { e.printStackTrace(); System.out.print("连接失败"); } } }
常见问题:
1、驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client preferences [TLS12]”
解决:该问题可以通过降低驱动版本来解决,也可以修改安全协议。
在你的设备上找到jdk的安装目录Java\jdk1.8.0_351\jre\lib\security下的java.security修改安全协议的配置即可。删掉这两个:TLSv1、TLSv1.1。特别要注意的是,如果你是选择了jre的运行环境来运行,那就是这个目录【\jre1.8.0_351\lib】。
修改前:
修改后:
2、通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connection refused: connect。
解决:
2.1 检查你进行连接的URL是否正确
2.2 关闭电脑防火墙
2.3 检查Sql Server的设置,重启SQL Server服务
参考:
使用Java连接SQLserver数据库_数据库_积极向上的小徐-DevPress官方社区