问题:
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;
这个是我从stackoverflow上面看到的,原文链接在这里,Stack Overflow问题链接。