標籤:local tac 字元 etc 預留位置 ide 執行sql ace generate
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 block35 e.printStackTrace();36 }37 }38 }
資料庫與java的串連