eclipse如何连接数据库|驱动包版本和JDK版本必须匹配
前段时间做课程实训,需要用eclipse如何连接数据库做后台数据交互,全程没看成套教程,随手跟着页面提示瞎点,连着三次操作都直接报错,弹窗内容密密麻麻,看着就心烦。
直接把mysql驱动jar包随便丢进项目根目录,没有放到lib文件夹,也没有做任何路径加载配置。运行代码之后控制台直接报ClassNotFoundException,驱动类完全无法被项目识别,程序卡在加载驱动的第一行代码,压根没办法继续往下执行数据库连接语句。
很小的一个操作。
右键项目,手动新建一个名为lib的文件夹,把下载好的mysql连接驱动jar包完整移入这个文件夹里。
选中放入文件夹的驱动jar包,右键选择Build Path,点击Add to Build Path,图标旁边出现小奶瓶样式的标识,就代表驱动已经被当前Java项目正常载入。
写连接代码的时候,照搬了网上老旧的写法,强行写上Class.forName("com.mysql.jdbc.Driver");这行固定加载语句。本地安装的是mysql8.0版本数据库,代码运行之后立刻弹出红色报错,提示驱动类已经过时,驱动兼容冲突导致连接端口直接断开。
删掉老式的驱动加载代码,mysql8.0及以上版本不需要主动注册驱动,只需要填写正确的数据库连接地址、账号和密码即可。连接url地址末尾必须追加?useSSL=false&serverTimezone=Asia/Shanghai,少写时区参数,百分百会出现时区报错。
配置完所有代码,本地数据库服务没有手动开启,直接点击eclipse运行按钮。程序一直处于连接等待状态,没有报错提示,也没有连接成功的返回信息,页面长时间卡顿,分不清是代码写错还是环境出了问题。
打开电脑服务面板,找到MySQL80对应的后台服务,手动点击启动,等待服务状态变为正在运行之后,再回到eclipse中重新运行Java测试类。
完整可直接照搬的测试代码,复制粘贴就能直接自测。
String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=Asia/Shanghai";
String user = "root";
String password = "自己本地数据库设置的密码";
Connection connection = DriverManager.getConnection(url,user,password);
System.out.println("数据库连接成功");
写完代码测试成功之后,又换了一台电脑打开同一个项目,再次运行直接连接失败。两台电脑的eclipse版本一致,数据库账号密码完全一样,代码没有改动分毫。
两台设备安装的JDK版本不一样,一台是JDK1.8,一台是JDK17,混用了同一版本的mysql驱动包。高版本JDK搭配低版本驱动,会直接出现协议不兼容问题,底层握手失败,外部看不出任何代码报错,就是始终连不上数据库。
不用刻意去更换编辑器或者重装数据库,只需要保证驱动版本、本地JDK版本、mysql数据库版本三者互相适配,大部分连接问题都能直接解决。