麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Java > 正文

JDBC中Statement和Preparement的使用講解

2024-07-14 08:43:26
字體:
來源:轉載
供稿:網友

Statement對象是用來執行SQL語句的

PreparedStatement:預編譯的Statement對象,是Statement的子接口。

一.性能和代碼編寫的簡潔程度方面

它允許數據庫預編譯SQL語句(這些SQL語句通常有帶有參數),以后每次只需改變SQL命令的參數,避免數據庫每次都需要編譯SQL語句,提高了性能。 e.g. 連接數據庫部分

//已定義好driver、url、user、passwd等//加載驅動Class.forName(driver);//獲得連接Connection conn = DriverManager.getConnection(url, user, passwd);

Statement:

//用Connection創建一個StatementStatement stmt = conn.createStatement() {  //100條SQL語句來插入100條記錄  for(int i = 0;i < 100;i++) {    stmt.executeUpdate("insert into student values(" + "null, 'aaa" + i + "',90)");  }}

PreparedStatement:

//用Connection創建一個PreparedStatementPreparedStatement pstmt = conn,getPreparedStatement("insert into student_table values(null, ?, 90)") {  //設置參數,100次傳入參數而不是100次傳入SQL語句  for(int i = 0;i < 100;i++) {    pstmt.setString(1, "姓名" + i);  //執行  pstmt.executeUpdate();  }}

通過運行以上的代碼可以發現,PreparedStatement插入100條記錄所用的時間比Statement插入100條記錄所花費時間少。而且可以在代碼中可以看出,帶有參數的SQL語句,創建Statement對象需要對參數進行拼接,但是PreparedStatement會簡潔很多。 

完整代碼移步GitHub:Statement&PrepareStatement

運行結果:

JDBC,Statement,Preparement

二.安全方面

又因為PreparedStatement不需要拼接,還可以防止SQL注入從而提高安全性 

注:SQL注入是一種Cracker入侵方式,從SQL語句的漏洞入侵 

比如一個登錄頁面,我們在獲取表單傳來的參數,將其與數據庫中的數據進行比對,比對有該賬號密碼時則登錄成功:

Statement:

//傳入參數username和passwd是提交的信息String sql = "select * from users " + "where username = ' " + username + " ' and password= ' " + passwd + " ';rs = stmt.executeQuery(sql);

如果在username框中輸入了:'or true or',那么,拼接后的SQL語句就變成了:

select * from users where username = ' ' or true or ' ' and desc = ' ';

結果為true被SQL當成直接量那么直接會登錄成功

PreparedStatement:

//傳入參數username和passwd是提交的信息PreparedStatement pstmt = conn.getPreparedStatement("select * from users where username = ? and password= ?");pstmt.setString(1, username);pstmt.setString(2, passwd);

從上述可以看出PreparedStatement相較于Statement有三個好處:

  • 1. 預編譯,性能較好
  • 2. 不用拼接,易編寫易讀懂
  • 3. 防止SQL注入,提高安全性

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中文字幕在线观看免费视频 | 国产韩国精品一区二区三区久久 | 成人免费自拍视频 | 国产精品久久久久久久久久了 | wankz100%videos| 国产流白浆高潮在线观看 | 国产在线观看91一区二区三区 | 天天天干夜夜夜操 | www.54271.com| 久久精国 | 久久精品re| 久久久免费观看完整版 | 在线成人免费av | 日本黄色大片免费 | 宅男噜噜噜66国产免费观看 | 黄色特级片黄色特级片 | 日韩毛片一区二区三区 | 精品亚洲二区 | 法国极品成人h版 | av电影在线观看网址 | 高潮娇喘嗯啊~文字 | 久久久久久久亚洲视频 | 久色成人网 | 国产精品毛片va一区二区三区 | 欧美成人性生活片 | 国产在线播放91 | 成人在线免费看 | 欧美91看片特黄aaaa | 国产精品亚洲一区二区三区久久 | 看全色黄大色黄大片女图片 | 久草在线高清 | 成人午夜精品久久久久久久3d | 一区二区三区欧美日韩 | 本色视频aaaaaa一级网站 | 久久久久北条麻妃免费看 | 亚洲第一页中文字幕 | 一级电影在线免费观看 | 国产成人在线观看网站 | 黄色大片免费网站 | 斗破苍穹在线观看免费完整观看 | 亚洲精品成人久久久 |