Java连接mysql出现SQL异常_java连接MySQL出现版本错误及连接数据库代码

今天eclipse连接mysql遇到不少问题。

我用的环境如下(错误的情况下):

eclipse 4.7;

jdk1.7(Java project);

mysql5.6;

mysql-connector-java-8.0.12.jar(需要导入);

部分连接语句(错误的部分):

String driver = "com.mysql.jdbc.Driver";

String url = "jdbc:mysql://localhost:3306/test ";

1 版本错误:Unsupported major.minor version 52.0

JDK版本在官方对应的版本号列表如下(引用https://blog.csdn.net/zixiao217/article/details/52818658):

此错误将

JDK 8.0 = 52,

JDK 7.0 = 51,

JDK 6.0 = 50,

JDK 5.0 = 49,

JDK 1.4 = 48,

JDK 1.3 = 47,

JDK 1.2 = 46,

JDK 1.1 = 45

将jdk 修改成1.8后这个错误消失

2 连接驱动driver错误

错误提示:

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

加入‘cj.’修改为此错误消失:

String driver = "com.mysql.cj.jdbc.Driver";

3  时区没有设置

错误提示:

java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)

at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)

at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)

at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)

at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73)

at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:76)

at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:832)

at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:456)

at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240)

at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:207)

at java.sql.DriverManager.getConnection(DriverManager.java:664)

at java.sql.DriverManager.getConnection(DriverManager.java:247)

at mysqljdbc1217.main.main(main.java:29)

Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)

at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:85)

at com.mysql.cj.util.TimeUtil.getCanonicalTimezone(TimeUtil.java:128)

at com.mysql.cj.protocol.a.NativeProtocol.configureTimezone(NativeProtocol.java:2236)

at com.mysql.cj.protocol.a.NativeProtocol.initServerSession(NativeProtocol.java:2260)

at com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:1314)

at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:963)

at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:822)

... 6 more

修改 :

String url = "jdbc:mysql://localhost:3306/test "+ "?serverTimezone=GMT%2B8";

错误全部消失。

全部代码如下:

package mysqljdbc1217;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class main {

public static void main(String[] args) {

//声明Connection对象

Connection con;

//驱动程序名

String driver = "com.mysql.cj.jdbc.Driver";

//URL指向要访问的数据库名mydata

String url = "jdbc:mysql://localhost:3306/test "+ "?serverTimezone=GMT%2B8";

//MySQL配置时的用户名

String user = "root";

//MySQL配置时的密码

String password = "11111";

//遍历查询结果集

try {

//加载驱动程序

System.out.println("执行结果如下所示:");

Class.forName(driver);

System.out.println("执行结果如下所示:");

//1.getConnection()方法,连接MySQL数据库!!

con = DriverManager.getConnection(url,user,password);

if(!con.isClosed())

System.out.println("Succeeded connecting to the Database!");

//2.创建statement类对象,用来执行SQL语句!!

Statement statement = con.createStatement();

//要执行的SQL语句

String sql = "select * from temporpary_data";

//3.ResultSet类,用来存放获取的结果集!!

ResultSet rs = statement.executeQuery(sql);

System.out.println("-----------------");

System.out.println("执行结果如下所示:");

System.out.println("-----------------");

System.out.println("姓名" + "\t" + "职称");

System.out.println("-----------------");

String job = null;

String id = null;

/* while(rs.next()){

//获取stuname这列数据

job = rs.getString("job");

//获取stuid这列数据

id = rs.getString("ename");

//输出结果

System.out.println(id + "\t" + job);

}

rs.close();

con.close();*/

} catch(ClassNotFoundException e) {

//数据库驱动类异常处理

System.out.println("Sorry,can`t find the Driver!");

e.printStackTrace();

} catch(SQLException e) {

//数据库连接失败异常处理

e.printStackTrace();

}catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}finally{

System.out.println("数据库数据成功获取!!");

}

}

}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值