初識jdbc

JDBC  ------------------  java數據庫連接技術

Java程序操作數據庫

(1)加載驅動類
    Class  vs class
    Class描述類的類
        class關鍵字

    Class.forName("類名").newInstance();      vs     類名  對象名 = new 類名();
    1、兩者都是創建對象
    2、第一種方式的優點在於括號裏面的類也許尚不存在,我們可以先用,編譯不會報錯,適用於團隊開發。第二種方式如果類不存在會編譯報錯。
    3、第一種方式需要處理異常,第二種方式不需要。

(2)獲取連接對象
    conn = DriverManager.getConnection(url,user,password);
    url= jdbc:mysql://localhost:3306/student
    url= 協議//--域名(ip地址加端口)--數據庫名
    不同的數據庫協議有區別

(3)基本操作 (增刪查改)
    String sql = "insert into studentinfo(name,password) values(?,?)";
    Statement     vs      PreparedStatement
    Statement stmt = conn.createStatement();
    stmt.execute(sql);底層發生網絡交互,流的應用。

    PreparedStatement ps = conn.prepareStatement(sql);
    ps.setString(1,"a");
    ps.setString(2,"b");
    ps.execute();
    
Statement與PreparedStatement的區別與聯繫:

1、sql語句有區別,Statement需要拼接,PreparedStatement可以設置問號,簡單一些。 PreparedStatement接口繼承Statement, PreparedStatement 實例包含已編譯的 SQL 語句,所以其執行速度要快於Statement 對象。
2、作爲 Statement 的子類,PreparedStatement 繼承了 Statement 的所有功能。三種方法execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要參數。
3、PreparedStatement盡最大可能提高性能。語句在被DB的編譯器編譯後的執行代碼被緩存下來,那麼下次調用時只要是相同的預編譯語句就不需要編譯,只要將參數直接傳入編譯過的語句執行代碼中(相當於一個函數)就會得到執行.這並不是說只有一個Connection中多次執行的預編譯語句被緩存,而是對於整個DB中,只要預編譯的語句語法和緩存中匹配.那麼在任何時候就可以不需要再次編譯而可以直接執行.而statement的語句中,即使是相同操作,而由於每次操作的數據不同所以使整個語句相匹配的機會極小,幾乎不太可能匹配.當然並不是所有預編譯語句都一定會被緩存,數據庫本身會用一種策略,比如使用頻度等因素來決定什麼時候不再緩存已有的預編譯結果.以保存有更多的空間存儲新的預編譯語句。
4、從安全性角度考慮。PreparedStatement更好一些,避免注入攻擊。
5、JDBC驅動的最佳化是基於使用的是什麼功能. 選擇PreparedStatement還是Statement取決於你要怎麼使用它們。對於只執行一次的SQL語句選擇Statement是最好的. 相反, 如果SQL語句被多次執行選用PreparedStatement是最好的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章