为什么 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")执行完这一句要15秒钟

eisldkw 2020-06-09 09:28:41
在连接 SQL SERVER 数据库时 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")在此处的执行时间要15秒钟,为什么会这么慢。我的这个项目是 JAVA 项目,非WEB项目

驱动包用的sqljdbc42.jar ,也将它添加到BUILD PATH了,Class.forName(DBDRIVER)需要执行13秒钟,getConnection 需要执行 40秒,为什么这么慢呀,

相关代码如下:

String DBDRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String DBURL = "jdbc:sqlserver://192.168.0.80:1433;instanceName=MSSQLSERVER;DatabaseName=nbdata;integratedSecurity=false";
String DBUSER = "sa";
String DBPASS = "HELLOworld2020";

Class.forName(DBDRIVER); //此处执行要15秒
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ; 此处执行要40多秒


在线急等大家的指导 。谢谢大家。
...全文
1056 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
eisldkw 2020-06-17
  • 打赏
  • 举报
回复
引用 8 楼 dmankill 的回复:
[quote=引用 6 楼 eisldkw 的回复:] [quote=引用 3 楼 tianfang 的回复:] sqljdbc42是比较老的驱动了 ,2017年就不更新 最新的在这里找 https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc 你可以使用目前的正式版 8.2.2 ,对应不同的jdk/jre版本还有独立的选择。 然后你再测试一下
jdk 从1.8 换成 11 ,驱动 换成了 mssql-jdbc-8.2.2.jre11.jar ,速度 还是 慢。[/quote] 装个虚拟机或到别人电脑上,把程序放里面远程连接到物理机的sqlserver试试效果,先排除系统问题, 把class.forname这句去掉试试,系统会自动装载驱动的,从1.6开始自动会加载环境变量中的jdbc4.0驱动[/quote] 非常感谢。
dmankill 2020-06-13
  • 打赏
  • 举报
回复
引用 6 楼 eisldkw 的回复:
[quote=引用 3 楼 tianfang 的回复:] sqljdbc42是比较老的驱动了 ,2017年就不更新 最新的在这里找 https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc 你可以使用目前的正式版 8.2.2 ,对应不同的jdk/jre版本还有独立的选择。 然后你再测试一下
jdk 从1.8 换成 11 ,驱动 换成了 mssql-jdbc-8.2.2.jre11.jar ,速度 还是 慢。[/quote] 装个虚拟机或到别人电脑上,把程序放里面远程连接到物理机的sqlserver试试效果,先排除系统问题, 把class.forname这句去掉试试,系统会自动装载驱动的,从1.6开始自动会加载环境变量中的jdbc4.0驱动
tianfang 2020-06-10
  • 打赏
  • 举报
回复
说说你的测试环境是怎样的吧 操作系统,网络连接,执行用户的安全级别
eisldkw 2020-06-10
  • 打赏
  • 举报
回复
引用 3 楼 tianfang 的回复:
sqljdbc42是比较老的驱动了 ,2017年就不更新

最新的在这里找 https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc

你可以使用目前的正式版 8.2.2 ,对应不同的jdk/jre版本还有独立的选择。

然后你再测试一下


jdk 从1.8 换成 11 ,驱动 换成了 mssql-jdbc-8.2.2.jre11.jar ,速度 还是 慢。
eisldkw 2020-06-10
  • 打赏
  • 举报
回复
引用 4 楼 aw277866304 的回复:
用连接工具先远程数据库看下是否数据库连接本身慢。
一般这种情况,要么是自身网络卡,要么是数据库服务器本身卡。


非常感谢。

引用 2 楼 失足成万古风流人物 的回复:
1、用数据库客户端工具试试,如果也慢,检查你的网络
2、连得本地还是远程,连接本地库试试,如果不慢,还是检查你的网络

所以,基本判定是网络配置有问题。


非常感谢。数据库客户端工具测试,速度很快,感觉不到时间就连接成功了。 是本机的数据库,127.0.0.1 和 本机 IP 都用来测试过了,速度一样的慢
  • 打赏
  • 举报
回复
1、用数据库客户端工具试试,如果也慢,检查你的网络 2、连得本地还是远程,连接本地库试试,如果不慢,还是检查你的网络 所以,基本判定是网络配置有问题。
qq_39936465 2020-06-09
  • 打赏
  • 举报
回复
引用 楼主 eisldkw 的回复:
在连接 SQL SERVER 数据库时 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")在此处的执行时间要15秒钟,为什么会这么慢。我的这个项目是 JAVA 项目,非WEB项目 驱动包用的sqljdbc42.jar ,也将它添加到BUILD PATH了,Class.forName(DBDRIVER)需要执行13秒钟,getConnection 需要执行 40秒,为什么这么慢呀, 相关代码如下: Class.forName(DBDRIVER); //此处执行要15秒 conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ; 此处执行要40多秒 在线急等大家的指导 。谢谢大家。
远程慢可以试试,在host文件中添加一行 ip地址空格远程计算机名。本地加载驱动都慢那就没办法了,可能是本身机器的问题。
CS_草祭先生 2020-06-09
  • 打赏
  • 举报
回复
用连接工具先远程数据库看下是否数据库连接本身慢。 一般这种情况,要么是自身网络卡,要么是数据库服务器本身卡。
tianfang 2020-06-09
  • 打赏
  • 举报
回复
sqljdbc42是比较老的驱动了 ,2017年就不更新 最新的在这里找 https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc 你可以使用目前的正式版 8.2.2 ,对应不同的jdk/jre版本还有独立的选择。 然后你再测试一下

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧