JDBC—Sql注入問題和事務控制

6. sql注入問題:

1. 說明:使用者可以給程序傳入一些sql的片段來達到破壞sql語句的功能

2. 解決方式:使用PreparedStatement

 

7. PreparedStatement:

1. Statement的比較:

1. Statement的子接口,可以解決sql注入問題

2. 是預先編譯的sql,當語句沒有錯誤時才完成編譯,多次執行時只需要編譯一次,因此執行多次相同的sql語句時性能更好

3. 可以處理更多的數據類型

2. 使用步驟:

1. 創建PreparedStatement:

String sql="select * from _user where userName=? and pwd=?";

PreparedStatement ps=conn.prepareStatement(sql);

2. ps的點位賦值,索引從1開始,例如:

ps.setString(1, 'cyz');

ps.setInt(96);

ps.setDate(date);

3. 執行ps,可以使用execute,executeUpdate,executeQuery,例如:

ps.executeQuery(); //通常在查詢時,有查詢條件

ResultSet rs=ps.executeQuery();

ps.executeUpdate();

ps.execute(); //使用時execute()()中不能有任何語句,否則會當作Statement處理

 

8. JDBC的事務控制:

1. 使用情況:當完成一個功能需要多個操作時一定要用到事務

2. 作用:防止出現異常時,同一個功能中的某些操作成功了,某些失敗了,如:A給B轉賬,A的錢沒有了B卻還沒轉過來

3. 前提:關閉自動提交,改爲手動提交

4. 語法:

conn.setAutoCommit(false); //設置爲手動提交,一般寫在獲得連接語句的後面

conn.commit(); //提交事務

conn.rollback(); //回滾事務,一般寫在catch語句中

發佈了72 篇原創文章 · 獲贊 14 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章