JDBC添加數據


JDBC添加數據
  數據庫連接的類型是 Connection 類型, 如果要操作數據庫還需要使用該對象來發送 sql語句

Connection 的方法:
  viod close() throws SQLExection
    關閉數據庫連接, 數據庫連接使用完畢之后必須關閉
  boolean isClosed() throws SQL Exection
    判斷該連接是否關閉
  void commit() throws SQLExection
    在程序中手工提交事務
  void rollback() throws SQLExection
    事務的回退
  void setAutoCommit(boolean autoCommit) throws SQLExection
    在 mysql 的 JDBC 中事務是自動提交的, 如果不需要事務自動提交則可以使用該方法進行設置
    設置為false 則表示取消自動提交
  Statement create Statement() throws SQLExection
    取得一個發送 sql 語句的接口對象, 但是現在不是哦用該接口對象來發送 sql 語句了,
    因為該接口存在一定的性能問題以及安全問題 (比如 sql 語句注入風險), 效率也低
      sql 注入:sql 注入是多年前的一個概念了, 就是可以通過 sql 注入的方式實現無密碼的操作
  PreparedStatement preparedStatement(String sql)
    取得一個發送 sql 語句的接口對象,該對象的類型就是 PreparedStatement 接口,其他第三方數據層工具封裝也是該接口,
    該接口可以避免類似於 sql注入 的安全風險問題, 並且效率更高 (現在程序中將 sql 語句編譯成指令后再發送到數據庫,
    數據庫只需要直接執行指令即可)

PreparedStatement 中的發送 sql 語句的方法:
  ResultSet executeQuery( ) throws SQLExection
    執行查詢語句,將查詢到的結果封裝到 ResultSet 接口對象中
  int executeUpdate( ) throws SQLExection
    執行的是更新類型 (insert, update, delete) 的 sql 語句, 返回值的是成功更新數據的條數)

Demo: 定義插入數據的程序

public class TestMysql {
    //取得連接
    private static Connection conn =ConnectionUitl.getConnection();
    
    public static void main(String[] args) {
        System.out.println("插入的數據行數是: " + insertEmp());
    }
    
    public static int insertEmp() {
        PreparedStatement pst = null;
        
        //定義出 sql 語句
        String sql = "INSERT INTO emp(empno,ename,job,sal,hiredate,mgr,comm,deptno)"
                +" VALUES(1002,'王五','總裁',9000.00,NOW(),7788,2000.00,10)";
        
        //使用連接對象取得發送 sql 語句的對象 (PreparedStatment 接口對象)
        try {
            conn.setAutoCommit(false); //取消事務的自動提交
            pst = conn.prepareStatement(sql);
            //發送 sql 語句
            return pst.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            ConnectionUitl.close(conn,pst);
        }
        return 0;
    }
}

Demo: 手動提交事務

 1 public class TestMysql {
 2     //取得連接
 3     private static Connection conn =ConnectionUitl.getConnection();
 4     
 5     public static void main(String[] args) {
 6         System.out.println("插入的數據行數是: " + insertEmp());
 7     }
 8     
 9     public static int insertEmp() {
10         int affectRow = 0;
11         
12         PreparedStatement pst = null;
13         
14         //定義出 sql 語句
15         String sql = "INSERT INTO emp(empno,ename,job,sal,hiredate,mgr,comm,deptno)"
16                 +" VALUES(1002,'王五','總裁',9000.00,NOW(),7788,2000.00,10)";
17         
18         //使用連接對象取得發送 sql 語句的對象 (PreparedStatment 接口對象)
19         try {
20             conn.setAutoCommit(false); //取消事務的自動提交
21             pst = conn.prepareStatement(sql);
22             //發送 sql 語句(手動提交事務)
23             affectRow = pst.executeUpdate();
24             conn.commit(); 
25             return affectRow;
26         } catch (SQLException e) {
27             e.printStackTrace();
28         } finally {
29             ConnectionUitl.close(conn,pst);
30         }
31         return 0;
32     }
33 }

 


免責聲明!

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



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