Java連接MySQL數據庫及簡單的增刪查改操作


主要摘自

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包

在eclipse中

a:點擊項目Project——選擇屬性Propeties

b:進行添加

打開屬性Propeties后,點擊java構建路徑(Java Build Path)
點擊添加jar(Add JARs...),選擇你的項目下的jar包,然后確定,最后添加完成

 

四、在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();
        }
    }
}

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM