主要摘自
https://www.cnblogs.com/town123/p/8336244.html
https://www.runoob.com/java/java-mysql-connect.html
工具:eclipse、MySQL、MySQL連接驅動:mysql-connector-java-5.1.45.jar
首先要下載Connector/J地址:http://www.mysql.com/downloads/connector/j/
這是MySQL官方提供的連接方式(即MySQL連接驅動),解壓后得到jar庫文件,需要在工程中導入該庫文件。
這是解壓后的文件:

一、新建java項目 然后新建一個文件夾——libs(用來放各種外部包)

右鍵工程名(我的是sqldemo1)—新建New—文件夾Folder—Folder name為libs—Finish。
二、在包里面加入連接mysql數據庫的包
即剛才解壓后得到的 mysql-connector-java-5.1.45-bin.jar
然后復制粘貼到我們java項目的libs文件夾下面(注意是物理地址里);
此時,在eclipse中—右擊libs文件夾—刷新Refresh,就將下載好的JDBC放到該文件夾下,如下圖所示:

三、構建路徑上的jar包
a:點擊項目Project——選擇屬性Propeties

b:進行添加


四、在java項目中進行mysql數據庫的連接
創建測試數據
接下來我們在 MySQL 中創建 test 數據庫,並創建 websites 數據表,表結構如下:
CREATE TABLE `websites` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` char(20) NOT NULL DEFAULT '' COMMENT '站點名稱', `url` varchar(255) NOT NULL DEFAULT '', `alexa` int(11) NOT NULL DEFAULT '0' COMMENT 'Alexa 排名', `country` char(10) NOT NULL DEFAULT '' COMMENT '國家', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
插入一些數據:
INSERT INTO `websites` VALUES ('1', 'Google', 'https://www.google.cm/', '1', 'USA'), ('2', '淘寶', 'https://www.taobao.com/', '13', 'CN'), ('3', '菜鳥教程', 'http://www.runoob.com', '5892', ''), ('4', '微博', 'http://weibo.com/', '20', 'CN'), ('5', 'Facebook', 'https://www.facebook.com/', '3', 'USA');
數據表顯示如下:

連接數據庫
以下實例使用了 JDBC 連接 MySQL 數據庫,注意一些數據如用戶名,密碼需要根據你的開發環境來配置
MySQL 8.0 以上版本的數據庫連接有所不同:
-
1、MySQL 8.0 以上版本驅動包版本 mysql-connector-java-8.0.16.jar。
-
2、com.mysql.jdbc.Driver 更換為 com.mysql.cj.jdbc.Driver。
-
MySQL 8.0 以上版本不需要建立 SSL 連接的,需要顯示關閉。
-
最后還需要設置 CST。
加載驅動與連接數據庫方式如下:
//MySQL 8.0 以下版本 - JDBC 驅動名及數據庫 URL static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost:3306/<數據庫名>"; // MySQL 8.0 以上版本 - JDBC 驅動名及數據庫 URL static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost:3306/<數據庫名>?useSSL=false&serverTimezone=UTC";
這里還要再說明一下:
com.mysql.jdbc.Driver 是 mysql-connector-java 5中的驅動名,
com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6中的驅動名
我這里使用的是5版。
import java.sql.*; public class test { //MySQL 8.0 以上版本 - JDBC 驅動名及數據庫 URL static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC"; // 數據庫的用戶名與密碼,需要根據自己的設置 static final String USER = "root"; static final String PASS = "123456"; public static void main(String[] args) { Connection conn = null; Statement stmt = null; try{ // 注冊 JDBC 驅動 Class.forName(JDBC_DRIVER); // 打開鏈接 System.out.println("連接數據庫..."); conn = DriverManager.getConnection(DB_URL,USER,PASS); // 執行查詢 System.out.println(" 實例化Statement對象..."); stmt = conn.createStatement(); String sql; sql = "SELECT id, name, url FROM websites"; ResultSet rs = stmt.executeQuery(sql); // 展開結果集數據庫 while(rs.next()){ // 通過字段檢索 int id = rs.getInt("id"); String name = rs.getString("name"); String url = rs.getString("url"); // 輸出數據 System.out.print("ID: " + id); System.out.print(", 站點名稱: " + name); System.out.print(", 站點 URL: " + url); System.out.print("\n"); } // 完成后關閉 rs.close(); stmt.close(); conn.close(); }catch(SQLException se){ // 處理 JDBC 錯誤 se.printStackTrace(); }catch(Exception e){ // 處理 Class.forName 錯誤 e.printStackTrace(); }finally{ // 關閉資源 try{ if(stmt!=null) stmt.close(); }catch(SQLException se2){ }// 什么都不做 try{ if(conn!=null) conn.close(); }catch(SQLException se){ se.printStackTrace(); } } System.out.println("Goodbye!"); } }
以上實例執行輸出結果如下:

五、一個實例增刪查該的實例
這部分內容是我后補的,主要針對一些常用的增刪查改操作給出一個樣本吧。注意,這里用的工具是idea而不是之前的eclipse了。
添加JDBC依賴
<!-- JDBC --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.16</version> </dependency>
1、創建數據庫
這里簡單地創建一個表,插入三條記錄。
DROP TABLE IF EXISTS `stu`; CREATE TABLE `stu` ( `id` INT NOT NULL COMMENT '編號', `name` varchar(100) DEFAULT NULL COMMENT '姓名', `age` INT NOT NULL COMMENT '年齡', PRIMARY KEY (`id`) ) COMMENT='學生表'; INSERT INTO stu VALUES(1,'張三',20); INSERT INTO stu VALUES(2,'李四',21); INSERT INTO stu VALUES(3,'王五',19);
2、連接測試
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class GetConnection { public static void main(String[] args){ try{ //調用Class.forName()方法加載驅動程序 Class.forName("com.mysql.cj.jdbc.Driver"); System.out.println("成功加載MySQL驅動!"); }catch(ClassNotFoundException e1){ System.out.println("找不到MySQL驅動!"); e1.printStackTrace(); } String url="jdbc:mysql://localhost/test?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true"; //JDBC的URL //調用DriverManager對象的getConnection()方法,獲得一個Connection對象 Connection conn; try { conn = DriverManager.getConnection(url, "root","******");//url 賬號 密碼 //創建一個Statement對象 Statement stmt = conn.createStatement(); //創建Statement對象 System.out.print("成功連接到數據庫!"); stmt.close(); conn.close(); } catch (SQLException e){ e.printStackTrace(); } } }
3、查找記錄
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class SelectTable { public static void main(String[] args){ try{ //調用Class.forName()方法加載驅動程序 Class.forName("com.mysql.cj.jdbc.Driver"); System.out.println("成功加載MySQL驅動!"); String url="jdbc:mysql://localhost/test?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true"; //JDBC的URL Connection conn; conn = DriverManager.getConnection(url, "root","*****");//url 賬號 密碼 Statement stmt = conn.createStatement(); //創建Statement對象 System.out.println("成功連接到數據庫!"); String sql = "select * from stu"; //要執行的SQL ResultSet rs = stmt.executeQuery(sql);//創建數據對象 System.out.println("編號"+"\t"+"姓名"+"\t"+"年齡"); while (rs.next()){ System.out.print(rs.getInt(1) + "\t"); System.out.print(rs.getString(2) + "\t"); System.out.print(rs.getInt(3) + "\t"); System.out.println(); } rs.close(); stmt.close(); conn.close(); }catch(Exception e) { e.printStackTrace(); } } }

4、增刪查改記錄
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; public class UpdateDeleteDemo { public static void main(String[] args)throws Exception{ try{ //調用Class.forName()方法加載驅動程序 Class.forName("com.mysql.cj.jdbc.Driver"); System.out.println("成功加載MySQL驅動!"); String url="jdbc:mysql://localhost/test?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true"; //JDBC的URL Connection conn; conn = DriverManager.getConnection(url, "root","******");//url 賬號 密碼 Statement stmt = conn.createStatement(); //創建Statement對象 System.out.println("成功連接到數據庫!"); //查詢數據的代碼 String sql = "select * from stu"; //要執行的SQL ResultSet rs = stmt.executeQuery(sql);//創建數據對象 System.out.println("原始數據: \n " + "編號"+"\t"+"姓名"+"\t"+"年齡"); while (rs.next()){ System.out.print(rs.getInt(1) + "\t"); System.out.print(rs.getString(2) + "\t"); System.out.print(rs.getInt(3) + "\t"); System.out.println(); } //增加數據 String sql1 = "insert into stu (id,name,age) values(?,?,?)"; PreparedStatement pst = conn.prepareStatement(sql1); pst.setInt(1,4); pst.setString(2,"sunlu"); pst.setInt(3, 25); pst.executeUpdate(); ResultSet rs1 = stmt.executeQuery(sql);//創建數據對象 System.out.println("插入后數據: \n" + "編號"+"\t"+"姓名"+"\t"+"年齡"); while (rs1.next()){ System.out.print(rs1.getInt(1) + "\t"); System.out.print(rs1.getString(2) + "\t"); System.out.print(rs1.getInt(3) + "\t"); System.out.println(); } //修改數據的代碼 String sql2 = "update stu set name=? where id=?"; pst = conn.prepareStatement(sql2); pst.setString(1,"nick"); pst.setInt(2,1); pst.executeUpdate(); ResultSet rs3 = stmt.executeQuery(sql);//創建數據對象 System.out.println("修改后數據: \n" + "編號"+"\t"+"姓名"+"\t"+"年齡"); while (rs3.next()){ System.out.print(rs3.getInt(1) + "\t"); System.out.print(rs3.getString(2) + "\t"); System.out.print(rs3.getInt(3) + "\t"); System.out.println(); } //刪除數據的代碼 String sql3 = "delete from stu where id=?"; pst = conn.prepareStatement(sql3); pst.setInt(1,1); pst.executeUpdate(); ResultSet rs2 = stmt.executeQuery(sql);//創建數據對象 System.out.println("刪除后數據: \n" + "編號"+"\t"+"姓名"+"\t"+"年齡"); while (rs2.next()){ System.out.print(rs2.getInt(1) + "\t"); System.out.print(rs2.getString(2) + "\t"); System.out.print(rs2.getInt(3) + "\t"); System.out.println(); } rs.close(); stmt.close(); conn.close(); }catch(Exception e) { e.printStackTrace(); } } }


