1. 程式人生 > >使用 JDBC 連線資料庫完成 CRUD 操作

使用 JDBC 連線資料庫完成 CRUD 操作

JDBC 完成 CRUD 操作總結

準備工作

開發環境和工具

Eclipse、mysql、通過 JDBC 連線 mysql 資料庫時需要的架包 mysql-connector-java。

JDBC 工具類

將獲取連線和釋放資源的方法封裝到一個工具類中,之後在使用的時候直接呼叫此類中的方法即可,減少了程式碼量,程式碼實現見下方。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.
SQLException; import org.junit.Test; /** * 工具類 * @author Tong * */ public class JDBCUtils_V1 { /** * 獲取連線方法 * @return */ @Test public static Connection getConnection() { Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/web08"
, "root", "1"); } catch (Exception e) { e.printStackTrace(); } return conn; } /** * 釋放資源方法 * @param conn * @param pstmt * @param rs */ @Test public static void release(Connection conn, PreparedStatement pstmt, ResultSet rs) { if (rs != null) { try { rs.close(); } catch
(SQLException e) { e.printStackTrace(); } } if (pstmt != null) { try { pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }

初始資料庫表記錄

初始資料

CRUD 操作

根據 id 查詢使用者資訊(可傳參)

查詢方法

/**
* 根據 id 查詢使用者資訊
*/
@Test
public void testFindUserById() {
    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;

    try {
        // 1. 獲取連線
        conn = JDBCUtils_V1.getConnection();
        // 2. 書寫 sql 語句
        String sql = "select * from tbl_user where uid=?";
        // 3. 獲取執行 sql 語句物件
        pstmt = conn.prepareStatement(sql);
        // 4. 設定引數
        pstmt.setString(1, "2");	// 查詢 uid = 2 的使用者資訊
        // 5. 執行 sql 語句
        rs = pstmt.executeQuery();
        // 6. 處理結果集
        while (rs.next()) {
            System.out.println(rs.getString(2) + ", " + rs.getString("upassword"));
        }
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        // 7. 釋放資源
        JDBCUtils_V1.release(conn, pstmt, rs);
    }
}

查詢結果

在這裡插入圖片描述

新增使用者資訊

新增方法,新增一條記錄,uname = ‘zhaoliu’,upassword = ‘666’。

/**
 * 新增使用者資訊
 */
@Test
public void testAdd() {
    Connection conn = null;
    PreparedStatement pstmt = null;

    try {
        // 1. 獲取連線
        conn = JDBCUtils_V2.getConnection();
        // 2. 編寫 sql 語句
        String sql = "insert into tbl_user values(null,?,?)";
        // 3. 獲取執行 sql 語句的物件
        pstmt = conn.prepareStatement(sql);
        // 4. 設定引數
        pstmt.setString(1, "zhaoliu");
        pstmt.setString(2, "999");
        // 5. 執行插入操作(返回影響的行數)
        int row = pstmt.executeUpdate();
        if (row > 0) {
            System.out.println("新增成功!");
        } else {
            System.out.println("新增失敗!");
        }
    } catch (Exception e) {
        throw new RuntimeException(e);
    } finally {
        JDBCUtils_V2.release(conn, pstmt, null);
    }
}

新增結果

在這裡插入圖片描述 在這裡插入圖片描述

根據 id 修改使用者資訊(可傳參)

修改方法,將 uid 為 2 的記錄中的 upassword 改為 999。

/**
 * 修改使用者資訊
 */
@Test 
public void testUpdateById() {
    Connection conn = null;
    PreparedStatement pstmt = null;

    try {
        // 1. 獲取連線
        conn = JDBCUtils_V3.getConnection();
        // 2. 編寫 sql 語句
        String sql = "update tbl_user set upassword=? where uid=?";
        // 3. 獲取執行 sql 語句的物件
        pstmt = conn.prepareStatement(sql);
        // 4. 設定引數
        pstmt.setString(1, "999");
        pstmt.setInt(2, 1);
        // 5. 執行 sql 語句
        int row = pstmt.executeUpdate();
        if (row > 0) {
            System.out.println("更新成功!");
        } else {
            System.out.println("更新失敗!");
        }
    } catch(Exception e) {
        throw new RuntimeException(e);
    } finally {
        JDBCUtils_V3.release(conn, pstmt, null);
    }
}

修改結果 在這裡插入圖片描述 在這裡插入圖片描述

根據 id 刪除使用者資訊(可傳參)

刪除方法,刪除 uid 為 4 的記錄。

/**
* 刪除使用者資訊
*/
@Test
public void testDeleteById() {
    Connection conn = null;
    PreparedStatement pstmt = null;

    try {
        // 1. 獲取連線
        conn = JDBCUtils_V3.getConnection();
        // 2. 編寫 sql 語句
        String sql = "delete from tbl_user where uid=?";
        // 3. 獲取執行 sql 語句的物件
        pstmt = conn.prepareStatement(sql);
        // 4. 設定引數
        pstmt.setInt(1, 4);
        // 5. 執行刪除操作
        int row = pstmt.executeUpdate();
        if (row > 0) {
            System.out.println("刪除成功!");
        } else {
            System.out.println("刪除失敗!");
        }
    } catch(Exception e) {
        throw new RuntimeException(e);
    } finally {
        JDBCUtils_V3.release(conn, pstmt, null);
    }
}

刪除結果

在這裡插入圖片描述 在這裡插入圖片描述

總結

JDBC開發一般步驟

使用 Statement

  1. 註冊驅動
  2. 獲取連線
  3. 書寫 sql 語句
  4. 獲取執行 sql 語句物件(Statement)
  5. 執行 sql 語句,獲取結果集
  6. 處理結果集
  7. 釋放資源

使用 PreparedStatement(防 sql 注入)

  1. 註冊驅動
  2. 獲取連線
  3. 書寫 sql 語句
  4. 獲取執行 sql 語句物件(PreparedStatement)
  5. 設定引數
  6. 執行 sql 語句,獲取結果集
  7. 處理結果集
  8. 釋放資源

涉及知識點

資料庫 sql 語句(增刪改查)、Java 基礎語法(異常處理等)、Test單元測試、JDBC連線資料庫開發步驟等。