關聯:
區別:**可讀性和可維護性
將sql語句與引數分離,可讀性高
sql語句與引數混合拼接,可讀性差,拼接sql語句易出錯
執行效能
語句在被db的編譯器編譯後的執行**被快取下來
,那麼下次呼叫時只要是相同的預編譯語句就不需要編譯,
只要將引數直接傳入編譯過的語句執行**中(相當於乙個函式效果)就會得到執行,
相同操作sql可以復用,效率高,另外支援批處理操作
statement的語句中,即使是相同一操作,因為資料內容不一樣,每執行一次都要對傳入的語句編譯一次.效率低
安全性不存在惡義sql【sql引數注入】安全問題
select * from emp where ename= '隨意' and sal = ' ';新增' or '1' = '1後
select * from emp where ename= '隨意' and
sal = ' ' or '1' = '1';
執行類似如上sql不會出現繞過驗證訪問資料庫中資料,
使用預編譯語句.傳入的任何引數內容就不會和原來的語句發生任何匹配的關係.
只要全使用預編譯語句,你就用不著對傳入的資料做任何過慮.
存在惡義sql【sql引數注入】安全問題
select * from emp where ename= '隨意' and sal = ' ';
新增 ' or '1' = '1後
select * from emp where ename= '隨意' and
sal = ' ' or '1' = '1';
[紅色部分恆成立]
執行類似如上sql會出現繞過驗證訪問資料庫中資料,
使用普通的statement,有可能要對惡意sql,做費盡心機的判斷和過慮.
在jdbc應用中,具有一定開發經驗的開發者,就應該始終以preparedstatement代替statement.也就是說,在任何時候都不要使用statement。
Java開發基礎 JDBC 基本使用步驟 03
改進背景介紹 v1版本 使用jdbc運算元據庫,我們會發現有些固有不變的 我們不需要每次都實現一遍,為了提高 的復用性與避免編寫重複的 我們可以將jdbc固有操作封裝成乙個工具類,在使用到時呼叫其中靜態方法即可。該類用來管理資料庫連線 author cher du public class dbut...
Java開發基礎 JDBC 基本使用步驟 05
改進背景介紹 v3版本 如果每次使用都建立新連線或使用乙個連線不利於連線的操作效能提高還會加重連線負擔,為了提高資料庫連線使用效能這個問題,我們可以使用 commons dbcp提供的org.apache.commons.dbcp包中basicdatasource工具類 即dbcp的方式建立連線池管...
核心開發基礎
1.程序管理 程序是執行程式的乙個例項,核心負責程序的建立 銷毀 程序 排程 程序間通訊等 note 核心本身不是乙個程序,而是程序的管理者 2.記憶體管理 管理程序的位址空間,使用者態下 區 資料區 私有棧 核心態 核心的 區 核心的資料區 核心棧。3.檔案系統支援 4.裝置控制 5.中斷和異常響...