问题情况
JDBC导入jar包了 也buildpath成功了
之前没有写class.forName("com.mysql.jdbc.Driver");因为会自动加载
但后来引入JavaWeb技术 就开始报错 No suitable Diver found
尝试后发现写了class.forName注册驱动后不报 No suitable Diver found
开始报ClassNotFoundException
为控制变量我尝试一个没有Java-web的版本 发现只要加上
class.forName("com.mysql.jdbc.Driver");就会报错
尝试解决(不想看的跳到总结部分)
老师讲你的lib文件里有2个jar 一个8版本一个5.1版本
但按他的要求删除后仍然不对
之后查询外网发现老师说的没错 用class加载类的时候有冲突,但这个问题没有解决
最后我想从头到尾再写一遍 ,把jar包和bulidpath都删了,从头来结果出现这个问题
Could not create connection to database server
原因是connection jar包和MySQL版本不匹配
查询得到我的mysql版本是8.03
使用对应的connector jar包也没有解决
因为class.forName语句和connection语句也不匹配
connector 6之后注册用class.forName("com.mysql.jc.jdbc.Driver");
再次更改后问题解决
总结:
我的问题产生的原因
导致原因是我有两个版本的jar包
5.1版本能class加载 加载语句也对 但是和mysql版本不对
8.0能自动注册和mysql版本对 但是用class加载时写的语句是5.1版本的
两个包一写ClassforName就出错有重复的错误
为了解决重复的错误,我删了8.0的包 更对应不上了
如果你遇到相同的问题,检查下列事项:
1.如果有多个jar包 正常不使用class.forName注册没事,都会自动加载
用Class.forName加载,如果有多个jar包会导致冲突
2.一定一定确认版本对应
mysql 和connector jar包和Class.forName();的语句版本都要对应
如果用8.0版本的MySQL 你的connector也要是8.0版本的
8.0后面的小数可以有区别(我的connector 是8.025,MySQL是8.03)
3.如果是8.0版本注册要用class.forName("com.mysql.jc.jdbc.Driver");
而6以前的是class.forName("com.mysql.jdbc.Driver");
如果这篇文章解决了你的问题,请在评论区留言,让我知道