JDBC编程可能遇到的错误:java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or ..

文章目录

          • 1.错误提示: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
          • 2.提示:Loading class com.mysql.jdbc.Driver. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver.
          • 3.错误提示:java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone.
          • 4.错误提示:java.sql.SQLException: Before start of result set
          • 5.错误提示:com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure


1.错误提示: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

无法找到指定的类异常
我出现这个错误的原因是:在编写JDBC程序时,忘记导入mysql 驱动jar包(我连接的的是mysql 数据库),导入所需jar即可解决问题

idea导入jar方式可参考这里
JDBC编程可能遇到的错误:java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or .._第1张图片

2.提示:Loading class com.mysql.jdbc.Driver. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver.

在新版的mysql驱动jar包中,com.mysql.jdbc.Driver驱动类已被弃用,替换为com.mysql.cj.jdbc.Driver驱动类
所以在加载注册数据库驱动时将com.mysql.jdbc.Driver改为com.mysql.cj.jdbc.Driver即可解决问题。

将
Class.forName("com.mysql.jdbc.Driver");

改为
Class.forName("com.mysql.cj.jdbc.Driver");

当然,官方只是提示你替换而已,并不会影响程序的运行
JDBC编程可能遇到的错误:java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or .._第2张图片

3.错误提示:java.sql.SQLException: The server time zone value ‘Öйú±ê׼ʱ¼ä’ is unrecognized or represents more than one time zone.

这个错误是:mysql服务器时区错误,mysql默认的是美国的时区,而我们在中国使用mysql服务器,时间上就出现了差错,所以我们只需将mysql服务器时区(serverTimezone)设置为当前系统的时区(GMT%2B8)即可解决问题,GMT%2B8代表东八区

将
String Url="jdbc:mysql://localhost:3306/studentMS";

改为
String Url="jdbc:mysql://localhost:3306/studentMS?serverTimezone=GMT%2B8";

提示: 使用旧版的mysql驱动jar包,不会出现这个错误,新版的mysql驱动jar包才加了这个限制,但注意使用旧版的mysql驱动jar包时,加载的驱动类应为com.mysql.jdbc.Driver,不能使用com.mysql.cj.jdbc.Driver,不然就会报错。


4.错误提示:java.sql.SQLException: Before start of result set

这个错误是:在编写JDBC程序中操作ResultSet结果集时,没有使用next()方法移动游标造成的。

idea中选择ResultSet对象,然后按ctrl+shift+B快捷键,查看ResultSet接口的源码,
发现
ResultSet有游标的概念,刚开始时,游标指向结果集的第一行之前,
所以如果结果集的数据的行数>=1,那么调用next()方法首先会将游标移动到结果集的第一行,
第二次调用游标就会移动到结果集的第二行,以此类推,每一次调用next()方法,都会将结果集向下一行移动
直至游标位于结果集最后一行之后,就会返回false退出while循环
如果结果集中一条数据都没有,则直接返回false


所以在没有使用next()方法移动游标之前,游标指向结果集的第一行之前,这时候我们想获取结果集的数据就会找不到数据的来源,就会报错

JDBC编程可能遇到的错误:java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or .._第3张图片CD4356


5.错误提示:com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

都说粗心大意害死人,前面注册JDBC驱动时,忘记导入驱动jar包,现在运行JDBC程序后,发现连mysql服务器都没打开,造成连接失败。
CD4356


扩展:
mysql 各个版本驱动jar包下载
MySQL版本,MySQL连接jdbc驱动版本与JDK版本问题
错误提示:java.lang.IllegalArgumentException解决方法

你可能感兴趣的:(JDBC)