欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于PreparedStatement的setObject作用及說明

 更新時(shí)間:2023年03月29日 14:25:32   作者:花傷情猶在  
這篇文章主要介紹了關(guān)于PreparedStatement的setObject作用及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

PreparedStatement的setObject作用

在了解setObject作用前講解一下PreparedStatement這個(gè)接口,然后循序漸進(jìn)從setXxx()方法講解到setObject。

PreparedStatement

java.sql包中的PreparedStatement接口繼承了Statement接口,PreparedStatement對(duì)象可以防止sql注入,而Statement不能防止sql注入,所以實(shí)際開發(fā)的時(shí)候千萬不要使用Statement。

SQL注入:

比如我的SQL語句為:

select * from user where username =' zhangsan' username ' and password ='password ' ;

其中傳入的參數(shù)為:username(用戶名) 和 password(密碼)。

惡意注入之前的含意是查詢user表的所有字段,匹配條件是username和password跟數(shù)據(jù)表的某條數(shù)據(jù)完全匹配使得條件成立,換言之就是用戶名和密碼必須都為正確的才可以查詢到數(shù)據(jù)。

惡意注入方式一:輸入 username: 隨意 password: ’ or ‘1’='1

select * from user where username ='xxxxx' and password ='xxx' or '1'='1'; 

and 優(yōu)先級(jí) 執(zhí)行 高于 or

惡意注入方式二、在SQL添加 – 是mysql的注釋 用戶名框:輸入 zhangsan’ 空格–空格 password 隨意輸入即可

select * from user where username ='zhangsan' -- ' and password ='' ;

注意:以上的 zhangsan’ 空格–空格 中的zhangsan是數(shù)據(jù)庫存在的

setObject

setObject就是給JDBC的SQL語句的占位符賦值的,即是下面的“?”

預(yù)編譯的SQL:參數(shù)使用?作為占位符

注意:sql的參數(shù)使用?作為占位符。 如:

select * from user where username = ? and password = ?;

獲取執(zhí)行sql語句的對(duì)象 PreparedStatement Connection.prepareStatement(String sql)

給?賦值:(Xxx代表參數(shù)類型)

  • 方法: setXxx(參數(shù)1,參數(shù)2)
  • 參數(shù)1:?的位置編號(hào) 從1 開始
  • 參數(shù)2:?的值

例如:

setString(1,"one")就是定義參數(shù)類型為String類型,然后給第一個(gè)?位置上賦值為one。

select * from user where username = 'one' and password = ?;

setInt(2,2)就是定義參數(shù)類型為Int類型,然后給第二個(gè)?的位置上賦值為2。

select * from user where username = 'one' and password = 2;

注意:setString定義為String類型就只能傳String類型,也就是說定義什么類型就要傳入什么類型。

重點(diǎn)來了

PreparedStatement的setObject的作用和setString的作用是一樣的!

setObject的第一個(gè)參數(shù)是?的位置編號(hào),第二個(gè)參數(shù)是Object類型,因?yàn)樗械念愋湍J(rèn)繼承object,這個(gè)時(shí)候參數(shù)就沒有類型限制,你可以傳入String類型或者Int類型…不需要手動(dòng)設(shè)置傳參類型。

例如:

setObject(1,"one")就是給第一個(gè)?位置上賦值為String類型的"one"。

select * from user where username = 'one' and password = ?;

setObject(2,2)就是給第二個(gè)?的位置上賦值為Int類型的2。

select * from user where username = 'one' and password = 2;

JDBC關(guān)于PreparedStatement.setObject的一些細(xì)節(jié)

JDBC中PreparedStatement.setObject(index,Object)方法,

1、index從1開始

2、在插入時(shí)間格式的字段時(shí),此處的Object格式必須是java.sql.Date的對(duì)象

3、Oracle表中date格式可以表示年月日時(shí)分秒

4、從表中取出對(duì)象封裝到JavaBean對(duì)象中,字段類型可以直接為java.util.Date 

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot實(shí)現(xiàn)分庫分表

    SpringBoot實(shí)現(xiàn)分庫分表

    這篇文章主要介紹了SpringBoot實(shí)現(xiàn)分庫分表,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • MyBatis注解CRUD與執(zhí)行流程深入探究

    MyBatis注解CRUD與執(zhí)行流程深入探究

    這篇文章主要介紹了MyBatis注解CRUD與執(zhí)行流程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-02-02
  • Mybatis添加Ehcache支持的方法

    Mybatis添加Ehcache支持的方法

    mybatis添加ehcache支持非常簡單,只主要在sql映射文件中添加一行代碼就可以實(shí)現(xiàn),糾結(jié)是什么代碼呢,這么神奇,帶著這樣問題一起通過本文學(xué)習(xí)吧
    2016-08-08
  • Java多線程死鎖示例

    Java多線程死鎖示例

    這篇文章主要介紹了Java多線程死鎖,結(jié)合實(shí)例形式分析了Java多線程出現(xiàn)死鎖的相關(guān)原因與操作注意事項(xiàng),需要的朋友可以參考下
    2018-08-08
  • 詳解eclipse下創(chuàng)建第一個(gè)spring boot項(xiàng)目

    詳解eclipse下創(chuàng)建第一個(gè)spring boot項(xiàng)目

    本文詳細(xì)介紹了創(chuàng)建第一個(gè)基于eclipse(eclipse-jee-neon-3-win32-x86_64.zip)+spring boot創(chuàng)建的項(xiàng)目。
    2017-04-04
  • 基于Java寫minio客戶端實(shí)現(xiàn)上傳下載文件

    基于Java寫minio客戶端實(shí)現(xiàn)上傳下載文件

    這篇文章主要介紹了基于Java寫minio客戶端實(shí)現(xiàn)上傳下載文件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Spring+Vue整合UEditor富文本實(shí)現(xiàn)圖片附件上傳的方法

    Spring+Vue整合UEditor富文本實(shí)現(xiàn)圖片附件上傳的方法

    這篇文章主要介紹了Spring+Vue整合UEditor富文本實(shí)現(xiàn)圖片附件上傳的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Java ArrayList中存放引用數(shù)據(jù)類型的方式

    Java ArrayList中存放引用數(shù)據(jù)類型的方式

    這篇文章主要介紹了Java ArrayList中存放引用數(shù)據(jù)類型的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java數(shù)據(jù)結(jié)構(gòu)之循環(huán)隊(duì)列簡單定義與用法示例

    Java數(shù)據(jù)結(jié)構(gòu)之循環(huán)隊(duì)列簡單定義與用法示例

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之循環(huán)隊(duì)列簡單定義與用法,簡要描述了循環(huán)隊(duì)列的概念、原理,并結(jié)合實(shí)例形式分析了java循環(huán)隊(duì)列的定義與使用方法,需要的朋友可以參考下
    2017-10-10
  • JAVA函數(shù)的定義、使用方法實(shí)例分析

    JAVA函數(shù)的定義、使用方法實(shí)例分析

    這篇文章主要介紹了JAVA函數(shù)的定義、使用方法,結(jié)合實(shí)例形式分析了JAVA函數(shù)的基本概念、功能、原理、定義、使用方法與操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04

最新評(píng)論