cocobear9  
一枚普通的zisuer(lll¬ω¬),努力每天多学一点点

使用的MySQL 8.0版本 ,首先导入JAR包 右键new一个libs的packdge ,把下载好的mysql-connector-java-8.0.13.jar粘贴到libs包中,右键Build Path选择的Add buildpath 就会在下面生成referenced libs ,同理删除jar包右键Build Path,选择Configure Build path选择romove即可。

第一种错误:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
这个错误是由驱动和数据库版本不一致造成的
我的数据库是mysql8.0但是使用了mysql-connector-java-5.1.38.jar这个驱动。所以会报这个错误。
解决方法:
将驱动替换为相应mysql8.0版本的驱动。
我的驱动是mysql-connector-java-8.0.13.jar 将它替换掉原来的驱动即可。
从这个连接里面下载8.X的驱动即可https://blog.csdn.net/weixin_41804049/article/details/87719574

然后还需修改第二个地方:
将com.mysql.jdbc.Driver改为com.mysql.cj.jdbc.Driver即可

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

 

提示系统时区出现错误,可以在mysql中执行命令:
set global time_zone=’+8:00’
或者在url 中添加 serverTimezone=UTC
如果只是第一个参数,应写成
url = “jdbc:mysql://localhost:3306/qlgydx?serverTimezone=GMT”

package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class DjbcDemo1 {

    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        //1.导入驱动jar包
        //2.注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");
        System.out.println("数据库驱动加载成功!");
        //3.获取数据库的连接对象
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3?serverTimezone=GMT", "root", "123456");
        System.out.println("数据库连接成功!");
        //4.定义sql语句
        String sql ="update stu set balance =500 where id =1";
        //5.获取执行sql的对象 Statement
        Statement stmt = conn.createStatement();
        //6.执行sql
        int count = stmt.executeUpdate(sql);
        //7.处理结果
        System.out.println(count);
        //8.释放资源
        stmt.close();
        conn.close();
    }

}
下面还出现了一堆红字 我还以为是又报错了呢 = =
数据库驱动加载成功!
数据库连接成功!
1
Fri Jul 24 16:17:54 CST 2020 WARN: Caught while disconnecting...

EXCEPTION STACK TRACE:



** BEGIN NESTED EXCEPTION ** 

javax.net.ssl.SSLException
MESSAGE: closing inbound before receiving peer's close_notify

STACKTRACE:

javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify
    at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:133)
    at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117)
    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:311)
    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:267)
    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:258)
    at java.base/sun.security.ssl.SSLSocketImpl.shutdownInput(SSLSocketImpl.java:801)
    at java.base/sun.security.ssl.SSLSocketImpl.shutdownInput(SSLSocketImpl.java:780)
    at com.mysql.cj.protocol.a.NativeProtocol.quit(NativeProtocol.java:1312)
    at com.mysql.cj.NativeSession.quit(NativeSession.java:182)
    at com.mysql.cj.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:1750)
    at com.mysql.cj.jdbc.ConnectionImpl.close(ConnectionImpl.java:720)
    at jdbc.DjbcDemo1.main(DjbcDemo1.java:28)


** END NESTED EXCEPTION **

 之前id=1 的balance=1000 

 

现在在JAVA中更改了update的语句后查看是否变成了500

 

 成功(●'◡'●)

 

posted on 2020-07-24 16:22  cocobear9  阅读(194)  评论(0编辑  收藏  举报