最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JDBC中Statement和Preparement的使用講解

 更新時間:2019年01月04日 09:12:23   作者:sdr_zd  
今天小編就為大家分享一篇關(guān)于JDBC中Statement和Preparement的使用講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

Statement對象是用來執(zhí)行SQL語句的

PreparedStatement:預(yù)編譯的Statement對象,是Statement的子接口。

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

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

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

Statement:

//用Connection創(chuàng)建一個Statement
Statement 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創(chuàng)建一個PreparedStatement
PreparedStatement pstmt = conn,getPreparedStatement("insert into student_table values(null, ?, 90)") {
  //設(shè)置參數(shù),100次傳入?yún)?shù)而不是100次傳入SQL語句
  for(int i = 0;i < 100;i++) {
    pstmt.setString(1, "姓名" + i);
  //執(zhí)行
  pstmt.executeUpdate();
  }
}

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

完整代碼移步GitHub:Statement&PrepareStatement

運行結(jié)果:

二.安全方面

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

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

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

Statement:

//傳入?yún)?shù)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 = ' ';

結(jié)果為true被SQL當(dāng)成直接量那么直接會登錄成功

PreparedStatement:

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

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

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

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • Java對Map進行按value排序的幾種常見方法

    Java對Map進行按value排序的幾種常見方法

    在日常開發(fā)中,Map 是我們經(jīng)常使用的數(shù)據(jù)結(jié)構(gòu)之一,盡管 Map 是按鍵 (key) 存儲和檢索數(shù)據(jù)的,但有時我們需要根據(jù) value 進行排序,這篇博客將詳細探討如何在 Java 中對 Map 進行按 value 排序的幾種常見方法,并分析它們的優(yōu)缺點,需要的朋友可以參考下
    2025-03-03
  • 深度理解SpringMVC中的HandlerMapping

    深度理解SpringMVC中的HandlerMapping

    這篇文章主要介紹了深度理解SpringMVC中的HandlerMapping,HandlerMapping的作用根據(jù)request找到對應(yīng)的處理器Handler,在HandlerMapping接口中有一個唯一的方法getHanler,需要的朋友可以參考下
    2023-09-09
  • spring boot整合kafka過程解析

    spring boot整合kafka過程解析

    這篇文章主要介紹了spring boot整合kafka過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • Spring Boot 2.X優(yōu)雅的解決跨域問題

    Spring Boot 2.X優(yōu)雅的解決跨域問題

    這篇文章主要給大家介紹了關(guān)于Spring Boot 2.X如何優(yōu)雅的解決跨域問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Spring Boot 2.X具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 淺談JSP與Servlet傳值及對比(總結(jié))

    淺談JSP與Servlet傳值及對比(總結(jié))

    下面小編就為大家?guī)硪黄獪\談JSP與Servlet傳值及對比(總結(jié))。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • win7 64位系統(tǒng)JDK安裝配置環(huán)境變量教程

    win7 64位系統(tǒng)JDK安裝配置環(huán)境變量教程

    這篇文章主要為大家詳細介紹了win7 64位系統(tǒng)JDK安裝配置環(huán)境變量教程,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Springboot框架實現(xiàn)自動裝配詳解

    Springboot框架實現(xiàn)自動裝配詳解

    在使用springboot時,很多配置我們都沒有做,都是springboot在幫我們完成,這很大一部分歸功于springboot自動裝配。本文將詳細為大家講解SpringBoot的自動裝配原理,需要的可以參考一下
    2022-08-08
  • java為移動端寫接口開發(fā)實例

    java為移動端寫接口開發(fā)實例

    本篇文章主要介紹了java如何為移動端寫接口,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Servlet Filter過濾器執(zhí)行順序

    Servlet Filter過濾器執(zhí)行順序

    這篇文章主要介紹了Servlet Filter過濾器執(zhí)行順序的相關(guān)資料,幫助大家更好的理解為什么要用過濾器,感興趣的朋友可以了解下
    2020-12-12
  • 一步步教你整合SSM框架(Spring MVC+Spring+MyBatis)詳細教程

    一步步教你整合SSM框架(Spring MVC+Spring+MyBatis)詳細教程

    使用SSM(Spring、SpringMVC和Mybatis)已經(jīng)有段時間了,項目在技術(shù)上已經(jīng)沒有什么難點了,基于現(xiàn)有的技術(shù)就可以實現(xiàn)想要的功能,下面這篇文章主要給大家介紹了關(guān)于整合SSM框架:Spring MVC + Spring + MyBatis的相關(guān)資料,需要的朋友可以參考下。
    2017-07-07

最新評論

诸暨市| 都江堰市| 五台县| 鄂州市| 资源县| 柘城县| 建湖县| 随州市| 大安市| 石河子市| 尚义县| 泾阳县| 册亨县| 贺州市| 武义县| 海安县| 万全县| 广州市| 乐亭县| 乐昌市| 阳高县| 溆浦县| 新巴尔虎右旗| 甘德县| 栖霞市| 营口市| 东安县| 石泉县| 新乡县| 格尔木市| 滕州市| 若羌县| 肥西县| 麻栗坡县| 阳信县| 子洲县| 宁化县| 清涧县| 夏河县| 黄冈市| 昌宁县|