jdbc: java database connection,也就是java的資料庫連接。 作用: 完成資料庫數據和記憶體數據的交互。 為了屏蔽不同資料庫的差異,在記憶體和各種資料庫之間建立了一個介面標準。每個廠商按照介面的標準來實現介面類。 jdbc 是java連接資料庫的一套標準。該標準中定義了一系 ...
jdbc: java database connection,也就是java的資料庫連接。
作用: 完成資料庫數據和記憶體數據的交互。
為了屏蔽不同資料庫的差異,在記憶體和各種資料庫之間建立了一個介面標準。每個廠商按照介面的標準來實現介面類。
jdbc 是java連接資料庫的一套標準。該標準中定義了一系列的介面,由資料庫廠商根據自身資料庫的特點提供實現類,由開發者調用。開發者根據介面調用方法,可以屏蔽不同資料庫廠商的差異。這樣,無論連接什麼資料庫都是一套API。
jdbc 操作步驟: 流操作步驟:
① 載入驅動,建立連接 1、建立流
② 執行SQL語句 2、操作流
③ 關閉連接 3、關閉
SQL註入: 在執行sql語句時,由於sql語句的值是由用戶輸入的,所以是以變數接收的,如果以拼接字元串方式來執行SQL語句,一旦數據中有非法字元或者有關鍵字時,會導致語法錯誤,或者執行結果不正確的情況,這稱為SQL註入。
Statement和PreparedStatement的區別:
Statement是PreparedStatement 的父介面。在執行SQL語句時,只能以拼接字元串方式,拼接值。會引起SQL註入。而且效率低。
PreparedStatement,是預編譯SQL語句執行對象,支持占位符方式,無論數據是什麼值,都當字元串處理,不會引起SQL註入。而且效率高。
java和資料庫的連接語法:
1 @Override 2 public void add(ManBean bean) { 3 4 //連接對象 5 Connection con=null; 6 //SQL語句執行對象 7 PreparedStatement ps=null; 8 // 載入驅動 9 try { 10 Class.forName("org.gjt.mm.mysql.Driver"); 11 //建立連接,localhost為主機IP地址(本機),3306為mysql的埠號, 12 //testdb為資料庫的庫名,characterEncoding=utf-8為位元組編碼集 13 //root為mysql的登錄名,123456為mysql的登錄密碼 14 con=DriverManager.getConnection("jdbc:mysql://localhost:3306/testdb?characterEncoding=utf-8", 15 "root","123456"); 16 System.out.println(con); 17 18 //執行SQL語句,?為占位符 19 ps=con.prepareStatement("insert into t_man(manName,birthday,money) values(?,?,?)"); 20 //填充占位符 21 ps.setString(1, bean.getName()); 22 ps.setDate(2, bean.getBirthday()); 23 ps.setInt(3, bean.getMoney()); 24 //更新資料庫 25 ps.executeUpdate(); 26 } catch (Exception e) { 27 e.printStackTrace(); 28 } 29 finally{//關閉連接 30 try { 31 ps.close(); 32 con.close(); 33 } catch (Exception e) { 34 // TODO Auto-generated catch block 35 e.printStackTrace(); 36 } 37 } 38 }