JDBC Sql注入問題和事務控制

2021-08-11 18:24:19 字數 1719 閱讀 6231

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語句中

JDBC SQL注入問題

當用 name 作為引數時 如果名字裡面含有 or 等帶有歧義的情況時,或導致錯誤。比如 string name or 1 or 將導致全部的記錄都會被輸出。這種錯誤叫做 sql注入。我們需要將過濾的工作交給資料庫來處理。即 preparedstatement ps.例子如下 preparedsta...

pdo 事務功能和防止sql注入功能

pdo 1.訪問不同的資料庫 2.自帶事務功能 3.防止sql注入 這下面是訪問和自帶的事務功能展示,無標題文件 title head body php 1.造物件 dsn mysql dbname mydb host localhost pdo new pdo dsn,root 123 2.寫sq...

idea404問題和自動注入失敗問題

自己備忘用 web.xml contextconfiglocation classpath配置問題導致的autowired自動注入失敗 1 contextconfiglocation classpath 多路徑的時候,需要在乙個classpath配置,用逗號分隔 2 sqlsessionfactor...