JDBC代码,注册驱动时遇到的问题(MySQL 8.0必看)
Exception in thread “main” java.lang.UnsupportedClassVersionError: com/mysql/cj/jdbc/Driver : Unsupported major.minor version 52.0
- 描述
在学JDBC的时侯遇到了这种问题,有点懵逼(因为是第一次遇到),查了一下,好像说的是环境什么的出了问题。虽然这么说让我有了方向,但是我依然处理了好久… …以下就是我解决问题的全过程 - 环境描述
工具:MyEclipse 10
电脑上装的Java:1.8版
MySQL数据库:8.0.18版 - 问题
- 代码
下面的代码只是初学JDBC时写的代码,有很多不好的地方,只是用来描述错误,不能用作借鉴
public class TestDemo {
public static void main(String[] args) throws Exception {
myTest();
}
static void myTest() throws Exception {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
// 1、注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 2、建立连接(Connection)
String url = "jdbc:mysql://127.0.0.1:3306/booking?&useSSL=false&serverTimezone=UTC";
conn = DriverManager.getConnection(url, "root", "password");
// 3、创建执行SQL的语句(Statement)
st = conn.createStatement();
// 4、执行语句
rs = st.executeQuery("select * from book");
// 5、处理执行结果(ResultSet)
while (rs.next()) {
System.out.println(rs.getObject(1) + "\t" + rs.getObject(2)
+ "\t" + rs.getObject(3) + "\t" + rs.getObject(4)
+ "\t" + rs.getObject(5));
}
} finally {
// 6、释放资源
try {
if (rs != null) {
rs.close();
}
} finally {
try {
if (st != null) {
st.close();
}
} finally {
if (conn != null) {
conn.close();
}
}
}
}
}
}
-
解决方法
- 首先需要说明的是,MySQL8以后,在注册驱动和连接数据库的代码出现了变化,请看上面代码,如果你和我的情况一样,请先保证这里是正确的代码。
- 然后问题所在就是Java的编译环境版本低了
这是我失败时的编译环境
因为MyEclipse的自带和默认编译环境是1.6,所以就无情的报了这么个玩意儿… …
当我一番捣鼓,将我之前自己安装Java环境1.8导入到MyEclipse以后,并用他编译了一下,就成功了(至于怎么导入,百度吧很多的,只要你的JRE系统库变成了你装的Java的版本,而不是默认版本,你就成功了)
这是我成功时的编译环境
-
总结
排除该问题顺序:
1、是否导入了JDBC的驱动包(即jar包)
2、你的语法是否有什么问题(MySQL 8以后发生了一些改变)
3、你的编译环境是否版本过低