jdbc连mysql报错:java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Drive]

jdbc连mysql报错:java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Drive

今天跟着课程做jdbc入门不明白为什么一直报错。
我的初始代码如下:

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

import org.junit.jupiter.api.Test;

import com.mysql.jdbc.Driver;

public class JDBCdemo1 {
   @Test
   public void demo1() {
   /*
    * 1.加载驱动
    * 2.获得链接
    * 3.创建执行SQL语句的对象,执行SQL
    * 4.释放资源
    */
	   
	   
	   try {
		 //1.加载驱动
		Class.forName("com.mysql.cj.jdbc.Drive");
		//2.获得链接
		Connection conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/jdbctest", "root", "root");
		//3.创建执行SQL语句的对象,执行SQL
		//3.1创建SQL对象
		String sql="select * from user";
		Statement stmt=conn.createStatement();
		//3.2执行SQL
		ResultSet resultset=stmt.executeQuery(sql);
		while(resultset.next()) {
			int uid=resultset.getInt("uid");
			String username=resultset.getString("username");
			String password=resultset.getString("password");
			String name=resultset.getString("name");
			
			System.out.println(uid+" "+username+" "+password+" "+name);
		}
		//4.释放资源
		resultset.close();
		stmt.close();
		conn.close();
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (ClassNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
   }
}

后来发现是导入的jar包有问题,我的MySQL版本是8.0,但是jar包的版本是5。有意思的是我之前做的一个jdbc入门的demo也是8.0的版本用的5.0的jar包,成功运行,挺奇怪的。
先在命令行 select version();确认MySQL的版本。
然后下载8.0的jar包:下载链接

同时还要注意,8.0版本更换驱动为:

“com.mysql.cj.jdbc.Driver”

之前的“com.mysql.jdbc.Driver”已经不能在MySQL 8.0版本使用了,官方文档链接:https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-api-changes.html;

调整之后的代码为:

package com.imooc.jdbc.demo1;
import java.sql.*;


public class JDBCdemo1
{
    public static void main(String[] args) 
    {
        try 
        {  
        	 Class.forName("com.mysql.cj.jdbc.Driver");      //加载MYSQL JDBC驱动程序      
             System.out.println("Success loading Mysql Driver!");  
         }  
         catch (Exception e) 
        {  
              System.out.print("Error loading Mysql Driver!");  
              e.printStackTrace();  
        }  
        try 
        {  
               System.out.println("start connecting");
                Connection connect = DriverManager.getConnection(  
                  "jdbc:mysql://127.0.0.1:3306/jdbctest"+"?useSSL=false&serverTimezone=Hongkong&useUnicode=true&characterEncoding=utf-8","root","root");  
                   //连接URL为   jdbc:mysql//服务器地址/数据库名  ,后面的2个参数分别是登陆用户名和密码  
          
               System.out.println("Success connect Mysql server!");  
              
               Statement stmt = connect.createStatement();  
               
               ResultSet rs = stmt.executeQuery("select * from user");  
                                                                      //user 为你表的名称  
               while (rs.next()) 
               {  
                   
                   String uid = rs.getString("uid");
                   String name = rs.getString("name");
                   String username = rs.getString("username");
                   
                   System.out.println("uid:" + uid +""
                        + "\t" + "name:" + name + "\t" + "username:"+ username + "\n" );
               }   
               rs.close(); 
               connect.close(); // 关闭连接  
         }  
         catch (Exception e) 
         {  
              System.out.print("get data error!");  
              e.printStackTrace();  
          }  
    }  
}

如果url写为:“jdbc:mysql://127.0.0.1:3306/jdbctest” 出现报错:the server timezone value……
这个是常见问题,直接在url链接之后增加:"?useSSL=false&serverTimezone=Hongkong&useUnicode=true&characterEncoding=utf-8"

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值