PreparedStatement的一點記錄

2021-08-18 05:50:45 字數 1097 閱讀 2820

connection conn = db_util.getconnection();

string sql = "select * from student where 1<>1";

preparedstatement ps = conn.preparestatement(sql);

其中sql語句的where 1<>1作用是當其他拼接的條件都不符合時返回空集,如果是where 1=1則返回全集,明顯前者節省開銷。

其次就是preparedstatement類,他與statement相比:

1.preparedstatement可以傳入帶佔位符的sql語句,以便修改。

string sql="insert into course(id,name,classroom) values(?,?,?);"

preparedstatement ps;

ps.setlong(1,"1");

ps.setstring(2,"zzjune");

ps.setstring(3,"yifulou");

2.preparedstatement可以防止sql注入。

select * from users where username='a' or password='and password=' or '1'='1';
比如這條sql語句,分析一下我們就會明白,其在資料庫中執行的命令是:

username='a'orpassword='and password='or'1'='1';
故會返回全集,這就是使用statement可能會出現的情況,而preparedstatement則會避免諸如此類的sql注入,因為在預處理過程中就已經對sql語句進行了處理,會將輸入的字段完全作為乙個引數來處理,引號也會被轉義。

3.在更新資料庫時,preparedstatement有ps.executeupdate();方法,該方法沒有引數。statement有executequery(sql)和execute(sql)方法,前者返回結果集,後者返回布林值(也可無左值)。

隨便記的一點Linux

linux 一種類unix 作業系統 程式 1 管理各種軟硬體資源2 為應用程式提供系統呼叫介面 gui 圖形使用者介面 linux中所有資料以 檔案的形態呈現 linux下磁碟分割槽和目錄的關係 目錄是邏輯上的,分割槽是物理上的 磁碟的分割槽必須掛載到目錄樹中某個具體的目錄上才能讀寫 檔案與目錄 ...

Redis的一點筆記

優勢之三原子 什麼是原子性,什麼是原子性操作?舉個例子 a想要從自己的帳戶中轉1000塊錢到b的帳戶裡。那個從a開始轉帳,到轉帳結束的這乙個過程,稱之為乙個事務。在這個事務裡,要做如下操作 如果在a的帳戶已經減去了1000塊錢的時候,忽然發生了意外,比如停電什麼的,導致轉帳事務意外終止了,而此時b的...

php一點筆記

1.replace函式作用 替換字串中匹配到的預先定義的正規表示式的內容 3.建立與資料庫的連線 db mysql connect localhost root or die could not connect mysql error mysql select db register or die ...