java PreparedStatement操作資料庫的使用方法 阿新 • • 發佈:2019-01-31 PreparedStatement介面繼承自Statement介面,PreparedStatement比普通Statement物件使用起來更加靈活更有效率.並且比Statement更加安全,因為Statement有一個漏洞就是可以sql注入 第一步:建立PreparedStatement物件 PreparedStatement pstm 同樣是通過Connection的preparedStatement(sql)方法來建立物件,sql語句可具有一個或者多個輸入引數,這些輸入引數的值在SQL語句建立時未被指定,而是為每個輸入引數保留一個問號'?'作為佔位符; 示例: 下面的建立語句中就帶有3個輸入引數的SQL語句 pstm=con.prepareStatement("update dog set health=?,love=? where id =?"); 第二步:設定每個輸入引數的值 通過呼叫set*()方法來完成(*代表資料型別) 程式碼: pstm.setInt(1,10); pstm.setInt(2,90); pstm.setString(3,"d1"); (注意事項:佔位符位置從1開始) 第三步:執行SQL語句 執行方法與Statement一樣.比如:pstm.executeUpdate(); 優點: 建立PreparedStatement物件時會對SQL語句進行預編譯,所以執行速度要快於Statement物件,因此,如果程式中存在需要多次執行SQL語句時,應該使用PreparedStatement物件來執行資料庫操作,以提高效率 示例: String sql="update dog set health=?,love=? where id =?"; pstm=con.prepareStatement(sql); pstm.setInt(1,10); pstm.setInt(2,90); pstm.setString(3,"d1"); pstm.executeUpdate(); pstm.setInt(1,22); pstm.setInt(2,33); pstm.setString(3,"d2"); pstm.executeUpdate(); 總結: PreparedStatement比Statement好在哪裡? 1:提高了程式碼的可讀性和可維護性 雖然使用PreparedStatement來代替Statement會多幾行程式碼,但避免了繁瑣麻煩又容易出錯的SQL語句憑藉,提高了程式碼的可讀性和可維護性 2:提高了SQL語句執行的效能 建立Statement物件時不使用SQL語句做引數,不會解析和編譯SQL語句,每次呼叫方法執行SQL語句時都要進行SQL語句解析和編譯操作,即操作相同僅僅的資料不同. 建立PreparedStatement物件時使用SQL語句做引數,會解析和編譯該SQL語句,也可以使用帶佔位符的SQL語句做引數,在通過set*()方法給佔位符賦值後執行SQL語句時無需再次解析和編譯SQL語句,直接執行即可,多次執行相同操作可以大大提高效能 3:提高了安全性 PreparedStatement使用預編譯語句,傳入的任何資料都不會和已經預編譯的SQL語句進行拼接,避免了SQL注入攻擊