Java接入sqlserver的一些坑点记录
问题:
1.Java对应sqlserver的jdbc版本
jdbc对应的maven版本:网上搜索出来的资料有两种,一种是比较老版本的
<dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>sqljdbc4</artifactId> <version>4.0</version> </dependency>
这个版本我去maven的主仓库查了下,更新时间是2016年3月份,所以最好就别用这个老版本的包了。
推荐使用:另外一种是船新版本的driver
<dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <version>10.2.0.jre8</version> </dependency>
2.Java对应sqlserver驱动名称
驱动名称:发现很多网上写的都是com.microsoft.jdbc.sqlserver.SQLServerDriver,申明这个名称在10.2.1版本是错的, 正确的是com.microsoft.sqlserver.jdbc.SQLServerDriver。我在想这个错的名称是不是之前老的包里面是叫这个名字,还是说有人笔误写错了, 然后大家都是看的他的博客,也没有手动去连接一下,就抄过来,所以导致我看到的好几篇文档全都是错的。然后我下载了老版本的sqljdbc4,和mssql-jdbc的6.2.1的包,用 jd-gui反编译看了下,发现主程序一直是叫com.microsoft.sqlserver.jdbc.SQLServerDriver,所以还真是有博主写错了,大家摘抄了他的博客,真是离离原上谱。
我是先看了, 这个博主有点机智,根据idea对接的数据源里面的driver来看,驱动包应用程序名称和驱动包的版本,我就是用这个方式找到了接入sqlserver的驱动包的名称和版本。 感觉以后对接其他数据源也可以使用类似的方式,先用idea连接上对应的数据源,这样就可以知道对应的驱动包,驱动住程序的名称,和驱动包的版本了。
3.直接使用idea连接sqlserver连不上
账密,url什么的都是对的,在navicat里面也可以连上,但是放到idea里面就连不上了。 搜索资料后发现,应该是idea连接sqlserver的客户端和sqlserver的服务端的SSL/TLS的协议对不上导致的,之前我在mysql连接的时候,也偶尔出现过类似的问题, 有兴趣可以看看这篇文章。不过这次sqlserver的解决方式不同与mysql,需要在jdbcurl后面加上
;encrypt=true;trustServerCertificate=true;
参考资料:
1. 2.。
