隐藏

JDBC连接Mysql8.0失败解决方法

发布:2021/9/2 16:35:54作者:管理员 来源:本站 浏览次数:1176

说来也惭愧,虽说装了mysql8,我却还在尝试用N年前链接Mysql5的JDBC做尝试,脑子着实有问题。

一.加载JAR包:

在你的项目中新建一个lib的文件夹,将下载好的jar包复制到lib文件夹中,右键点击jar包->Buid Path->Add Buid Path.

 

二.5.0.X版本与8.0.X版本的区别:

1. 5.0.X版本连接的驱动地址为:"com.mysql.jdbc.Driver",而8.0.X版本的更改为:"com.mysql.cj.jdbc.Driver"

2. 建立连接时url增加了一些参数: 5.0.X版本的url为String url = "jdbc:mysql://localhost:3306/student"

而8.0.X版本的需要在后面加上一串字母变为:String url = "jdbc:mysql://local:3306/student?&useSSL=false&serverTimezone=UTC"

 

三.连接数据库读取数据

用Navicat Premium中建一张数据表


java连接数据库代码:
package mysql.test;

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

/**
 * 
 * @author: Doomed
 * @date: 2018/7/20
 * @place: usth
 *
 */
public class MysqlDemo {
    public static void main(String[] args){
    // 加载数据库驱动  com.mysql.jdbc.Driver
        String driver = "com.mysql.cj.jdbc.Driver";
        // 获取mysql连接地址
       String url = "jdbc:mysql://localhost/student?&useSSL=false&serverTimezone=UTC";
        // 数据名称
       String username = "root";
        // 数据库密码
        String password = "123456";
        // 获取一个数据的连接
        Connection conn = null;
        // 获取连接的一个状态
        try{
            Class.forName(driver);
            //getConnection()方法,连接MySQL数据库!
            conn=DriverManager.getConnection(url,username,password);
            if(!conn.isClosed())
            System.out.println("数据库连接成功!");
             //创建statement类对象,用来执行SQL语句!
            Statement Statement=conn.createStatement();
            //要执行的SQL语句
            String sql="select * from info" ;
            //ResultSet类,用来存放获取的结果集!
            ResultSet rs=Statement.executeQuery(sql);
             System.out.println("-------------------------------");
             System.out.println("执行结果如下所示:");  
             System.out.println("-------------------------------");  
             System.out.println("学号" + "\t" + "姓名"+"\t");  
             System.out.println("-------------------------------");  
             String id=null;
             String name=null;
             while(rs.next()){
                //获取‘学号’这列数据
                 id=rs.getString("number");
                 //获取‘姓名’这列数据
                name=rs.getString("name");
                //输出结果
                System.out.println(id+"\t"+name+"\t");
             }
             rs.close();
             conn.close();
         }
         catch(ClassNotFoundException e){
             //数据库驱动类异常处理
        System.out.println("数据库驱动加载失败!");
        e.printStackTrace();
         }
        catch(SQLException e1){
        //数据库连接失败异常处理
         e1.printStackTrace();
        }
        catch(Exception e2){
        e2.printStackTrace();
        }
        finally{
             System.out.println("-------------------------------");  
            System.out.println("数据库数据获取成功!");
        }
        }
}

 

执行结果:


 

    (总结一句话:新版的就是事多)

 
原文链接:https://blog.csdn.net/sinat_41721615/article/details/84346249