JDBC連線Mysql8.0.12失敗解決方法
感慨一下:為什麼別人遇不到的error我全部都能遇得到???
本來昨天好不容易安裝完了Mysql並且解決了遠端連線的問題,然後今天就在連線JDBC上遭受了打擊。
相信看這篇文章的朋友應該大部分都是因為用5.0.X版本的jar包連線失敗的吧?
一.載入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("資料庫資料獲取成功!");
}
}
}
- 執行結果:
(總結一句話:新版的就是事多)