首頁 > 軟體

零基礎掌握JDBC操作MySQL

2022-10-26 14:01:29

JDBC概述

Java資料庫連線,(Java Database Connectivity,簡稱JDBC)是Java語言中用來規範使用者端程式如何來存取資料庫的應用程式介面,提供了諸如查詢和更新資料庫中資料的方法。

IDEA下建立JDBC環境

❤️新建 Maven 工程

❤️填寫專案所在目錄、名稱、GroupId、ArtifactId

❤️設定 pom.xml 檔案

在此檔案中輸入以下程式碼,有部分程式碼是IDEA自動生成,我們只需要補充,程式碼補充完成之後,點選右上角更新按鈕,IDEA就會開始下載MySQL聯結器,有了這個聯結器,我們才能通過Java程式碼連結MySQL伺服器

首次設定此檔案可能需要較長時間

當External Libraries 下出現了 mysql-connector-java 時,說明設定成功

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.hsq</groupId>
    <artifactId>jdbc-demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>
    </dependencies>
</project>

JDBC 下操作 SQL 的套路

❤️操作 SQL 之前的準備

1. 構造好一個 DataSource 物件

2. 通過 DataSource 得到 Connection 物件

3. 通過 Connection 物件 + SQL 語句,得到 Statement 物件

建議將以下程式碼封裝成一個 DBUtil 類,以便之後使用

有了以下程式碼就可以正式在 JDBC 下操作 SQL 了

public class DBUtil {
    private static final DataSource dateSource;
    static {
        MysqlDataSource db = new MysqlDataSource();
        db.setServerName("localhost");
        db.setPort(3306);    // MySQL 伺服器埠,一般為3306
        db.setUser("root");    // 登入 MySQL 伺服器的使用者名稱
        db.setPassword("123456");    // 登入 MySQL 伺服器的密碼
        db.setDatabaseName("0331_library");    // 設定預設庫
        db.setUseSSL(false);
        db.setCharacterEncoding("utf-8"); 
        db.setServerTimezone("Asia/Shanghai");
        dateSource = db;
    }
    public static Connection connection() throws SQLException {
        return dateSource.getConnection();
    }
}

❤️如何使用程式碼執行SQL

在 JDBC 下操作 SQL 有兩套固定程式碼,只需要更換不同的 SQL 語句即可

1. 帶結果的 SQL 語句 例如:select

2. 不帶結果的 SQL 語句 例如:delect,update,insert

帶結果的 SQL 語句

String sql = "要執行的 SQL";
try (Connection c = db.getConnection()) {
    try (PreparedStatement ps = c.prepareStatement(sql)) { 
        try (ResultSet rs = ps.executeQuery()) { 
            while (rs.next()) {
                int i = rs.getInt(1);
                String s = rs.getString(2); 
            }
        }
    }
}

不帶結果的 SQL 語句

String sql = "不帶結果的 SQL";
try (Connection c = db.getConnection()) {
    try (PreparedStatement ps = c.prepareStatement(sql)) {
        ps.executeUpdate();
    }
}

上面這兩套程式碼的主要區別是:

有結果的程式碼最後需要一個 ResultSet 物件,執行 ps.executeQuery(),並且需要 while 來得到每一行的結果

沒有結果的程式碼則直接執行ps.executeUpdate() 即可

JDBC 下增刪改查的完整程式碼

public class Main {
    public static void main(String[] args) throws SQLException {
        MysqlDataSource db = new MysqlDataSource();
        db.setServerName("localhost");
        db.setPort(3306);
        db.setUser("root");
        db.setPassword("123456");
        db.setDatabaseName("0331_library");
        db.setUseSSL(false);
        db.setCharacterEncoding("utf-8");
        db.setServerTimezone("Asia/Shanghai");
     // 增
     try (Connection c = db.getConnection()) {
         String sql = "insert into readers (name) values ('陳浩')";
         try (PreparedStatement ps = c.prepareStatement(sql)) {
             ps.executeUpdate();
         }
     }
    // 刪
     try (Connection c = db.getConnection()) {
         String sql = "delete from readers where rid = 1";
         try (PreparedStatement ps = c.prepareStatement(sql)) {
             ps.executeUpdate();
         }
     } 
    // 改
     try (Connection c = db.getConnection()) {
         String sql = "update readers set name = '123' where rid = 1";
         try (PreparedStatement ps = c.prepareStatement(sql)) {
             ps.executeUpdate();
         }
     } 
    // 查
     try (Connection c = db.getConnection()) {
         String sql = "select name from readers where rid = 1";
         try (PreparedStatement ps = c.prepareStatement(sql)) {
             try (ResultSet rs = ps.executeQuery()) {
                where (rs.next) {
                    String name = rs.getString(1);
                }    
             }
         }
     } 
}

到此這篇關於零基礎掌握JDBC操作 MySQL的文章就介紹到這了,更多相關JDBC操作 MySQL內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com