JavaWeb中jdbc增刪查改

嘻嘻碩發表於2021-11-02

jdbc增刪查改

前言:

Java資料庫連線(Java Database Connectivity,J 簡稱JDBC),簡單來說就是 使用Java執行sql語句的,面向關係型資料庫的java_API


  1. 建立 Directory包 > 取名為 lib
  1. 後匯入 MySQL-connector-java-5.1.37 檔案package
  2. 建立資料庫(不然連線什麼)

    // 依據實體類建立資料庫欄位和型別 
  1. 建立實體類(BankModel.java)
package com.kjzz;

public class  Teacher{
       // 成員變數 
    private int SID;  // id
    private String SName; // name
    private String birthday; // birthday 生日

    
   // 無參構造 / 有參構造 
   public Teacher(){
       
   } 
    
   public Teacher(int SID, String SName,String birthday) {
        this.SID = SID;
        this.SName = SName;
        this.birthday = birthday;
    }
    
    // get / set 方法
    public int getSID() {
        return SID;
    }

    public void setSID(int SID) {
        this.SID = SID;
    }

    public String getSName() {
        return SName;
    }

    public void setSName(String SName) {
        this.SName = SName;
    }


    public String getBirthday(){
        return birthday;
    }

    public void setBirthday(String birthday){
        this.birthday = birthday;
    }

}

5.建立資料庫驅動類(DBUtill.java)

public class DBConn{
    // 驅動 , 路徑 , 使用者名稱 密碼
    // DRIVER--URL---USER-PWD
    
    public static String DRIVER = "com.mysql.jdbc.Driver";
    // jdbc:資料庫名:// localhost:埠號/連線的資料庫 
    public static String URL = "jdbc:mysql://localhost:3306/test";
    public static String USER = "root";
    public static String PWD = "root";
    
     // 獲取連結,為了處理找不到這個類,所以要異常處理
    static{
        try{
            Class.forName(DRIVER); // 通過這個驅動名去找這個類
        } catch(ClassNotFoundException e){
            e.printStackTrace();
        }
    }
    // 連線 
    public static Connection getConnection(){ // 要匯入sql的包 不要帶jdbc的
        
        Connection conn = null;
        
        try{
            // 獲取連結用的
            conn = DriverManager.getConnection(URL,USER,PWD)
            // 路勁 使用者名稱 密碼
        } catch(SQLException e){
            e.printStackTrace();
        }
     
    }
    
    /** 關閉連線
    當資料庫使用後必須關閉,如果沒有關閉資料庫,
    資料庫介面有限,下次不能連線
    */
    public static void CloseConn(Conncetion conn,PerpredStatement prep,ResultSet rs){
    
        try{
            if(rs != null){ // 不等於空 說明在使用
                rs.close();
            }
            if(perp != null){
                prep.close();
            }
            if(coon !=  null){
                coon.close();
            }
        }catch(Exception e){
            e.printStackTrace();
        }
        
}
    
    
    
    // 測試 
     public static void main(String[] args) {
      Connection conn =  getConnectionV();
        System.out.println("ConnDB測試" + conn);
    }
   // 輸出結果 ConnDB測試 com.mysql.jdbc.JDBC4Connection@289d1c02
    
}

6.建立資料庫操作類

public class ZSGC {

    public static Connection conn = null; // 連線物件
    public static PreparedStatement prep = null; // 處理語句
    public static ResultSet rs = null; // 查詢後返回的結果集
    
    /*    查詢方法 實現思路
    1. 載入資料庫驅動(已經寫好了 連線)
    2. 獲取資料庫連線
    3. 通過Conncetion 實列獲取 Statement 物件
    4. 通過 Statement 實列執行 SQL 語句 
    5. 處理 ResultSet 結果集
    6. 回收資料庫資源 

    */
    public List<Teacher> ChaXun(){
        List<Teacher> list = new ArrayList<>();
        String SelectSql = "select * from teacher"; // 表

        try {
            conn = Conn.getConnection(); // 1. 連線
            prep = conn.prepareStatement(SelectSql); // 2. 處理sql
            rs = prep.executeQuery(); // 3. 查詢返回的結果集
            
            while(rs.next()){ //rs 有內容,不為空
                Teacher t = new Teacher();
                int ID = rs.getInt("sid");
                String NAME = rs.getString("sname");
                String BIRTHDAY = rs.getString("birthday");
                t  = new  Teacher(ID,NAME,BIRTHDAY);
                list.add(t); list.add(stu); // 都要加進list集合
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally{
            Conn.CloseConn(conn,prep,rs);
        }
        return list;
    }

    // 新增
    public static boolean Insert(Teacher teacher){
        int num = 0;
        String InsertSql = "INSERT INTO teacher values(?,?,?)";
        try {
            conn = Conn.getConnection();
            prep = conn.prepareStatement(InsertSql);
            prep.setInt(1,teacher.getSID());
            prep.setString(2,teacher.getSName());
            prep.setString(3,teacher.getBirthday());
            num = prep.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            Conn.CloseConn(conn,prep,rs);
        }
        return num > 0;
    }

    // 刪除
    public static boolean Delete(int key){
        int num = 0;
        String DeleteSql = "Delete from teacher where id = ?";

        try {
            conn = Conn.getConnection();
            // 執行sql語句
            prep = conn.prepareStatement(DeleteSql);
            prep.setInt(1,key);
            num = prep.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            Conn.CloseConn(conn,prep,rs); 
        }
        return num > 0;
    }
    // 修改
    public static boolean Update(Teacher teacher){
        int num = 0; // 定義影響的行數
        String UpdateSql = "update teacher set sid = ?,sname = ? where sid = ? ";

        try {
            conn = Conn.getConnection();
            prep = conn.prepareStatement(UpdateSql);
            prep.setInt(1,teacher.getSID());
            prep.setString(2,teacher.getSName());
            prep.setInt(3,teacher.getSID());
            num = prep.executeUpdate(); // 增刪改都是這個,然會INT型別
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            Conn.CloseConn(conn, prep, rs);
        }
        return num > 0;
    }

}
  1. 測試
public class Text1 {
    public static void main(String[] args) {
    
        Conn conn = new Conn();
        System.out.println("conn = " + conn);

        CRUD crud = new CRUD();
        List<Teacher> list = crud.ChaXun();
        for (Teacher t : list) {
            System.out.println(t.getSID());
            System.out.println(t.getSName());
            System.out.println(t.getBirthday());
        }
        // 新增
        Teacher t1 = new Teacher(3,"白居易","1001-11-11");
        boolean insert = CRUD.Insert(t1);
        if (insert == true){
            System.out.println("新增成功");
        } else{
            System.out.println("新增失敗");
        }
        // 修改
        boolean delete = CRUD.Delete(2);
        if (delete == true){
            System.out.println("刪除成功");
        } else {
            System.out.println("報錯咯");
        }
        // 修改
        Teacher t2 = new Teacher();
        t2.setSID(1);
        t2.setSName("張三");
        t2.setSID(1);

        boolean update = CRUD.Update(t2);
        if (update == true){
            System.out.println("1號名字已被修改為張三");
        } else {
            System.out.println("失敗");
        }
      

    }
}

相關文章