Java中的PreparedStatement對(duì)象使用解析
Java的PreparedStatement對(duì)象
與Statement對(duì)象的區(qū)別
引入PreparedStatement對(duì)象是因?yàn)槭褂肧tatement對(duì)象容易被SQL注入,而PreparedStatement對(duì)象采用了預(yù)編譯的方法,會(huì)對(duì)傳入的參數(shù)進(jìn)行強(qiáng)制類型檢查和安全檢查,進(jìn)而避免了SQL注入的產(chǎn)生,使得操作更加安全(具體見博客內(nèi)的文章SQL注入簡(jiǎn)介)
操作方法
編寫SQL語句
? String sql = "select * from users where id = ?"; ? String sql = "insert into users(id,name,password,email,birthday) values(?,?,?,?,?)" ? String sql = "updateaccountset money = money - ? whereid= ?";
預(yù)編譯
? st = conn.prepareStatement();
傳遞參數(shù)
? st.setInt(1,2);
執(zhí)行
? rs = st.executeQuery();
使用方法的區(qū)別
- SQL語句中使用?占位符代替參數(shù)
- 創(chuàng)建對(duì)象的方法不同
- conn.createStatement();
- conn.prepareStatement(sql);
- PrepareStatement中使用預(yù)編譯SQL,先寫sql,然后不執(zhí)行
- 傳遞參數(shù)方法中第一個(gè)參數(shù)表示第幾個(gè)占位符,第二個(gè)參數(shù)則為該占位符的要傳遞的值
注意事項(xiàng)
占位符不能代替字段名
示例
package com.test; import com.test.second.JdbcUtils; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Date; public class PrepareTest { public static void main(String[] args) { Connection conn = null; PreparedStatement st = null; ResultSet rs = null; try { conn = JdbcUtils.getConnection(); String sql = "insert into users(id,`name`,`password`,`email`,`birthday`) values(?,?,?,?,?)"; st = conn.prepareStatement(sql); st.setInt(1,1); st.setString(2,"cyh"); st.setString(3,"123456"); st.setString(4,"1294967895@qq.com"); // 注意點(diǎn):sql.Date是數(shù)據(jù)庫(kù)中使用的時(shí)間,java,sql.Date() // util.Date是java中使用的時(shí)間,new Date().getTime()獲得當(dāng)前時(shí)間戳 st.setDate(5,new java.sql.Date(new Date().getTime())); // i返回操作數(shù)據(jù)數(shù) int i = st.executeUpdate(); if(i>0){ System.out.println("插入成功"); } } catch (SQLException e) { e.printStackTrace(); } finally { JdbcUtils.release(conn,st,rs); } } }
到此這篇關(guān)于Java中的PreparedStatement對(duì)象使用解析的文章就介紹到這了,更多相關(guān)Java的PreparedStatement對(duì)象內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java中PreparedStatement的用法解析
- Java PreparedStatement用法詳解
- Java之PreparedStatement的使用詳解
- java中Statement 與 PreparedStatement接口之間的關(guān)系和區(qū)別
- java中PreparedStatement和Statement詳細(xì)講解
- Java使用PreparedStatement接口及ResultSet結(jié)果集的方法示例
- Java數(shù)據(jù)庫(kù)連接PreparedStatement的使用詳解
- 詳解Java的JDBC中Statement與PreparedStatement對(duì)象
相關(guān)文章
如何使用Spring?integration在Springboot中集成Mqtt詳解
MQTT是多個(gè)客戶端通過一個(gè)中央服務(wù)器傳遞信息的多對(duì)多協(xié)議,能高效地將信息分發(fā)給一個(gè)或多個(gè)訂閱者,下面這篇文章主要給大家介紹了關(guān)于如何使用Spring?integration在Springboot中集成Mqtt的相關(guān)資料,需要的朋友可以參考下2023-02-02創(chuàng)建Jersey REST 服務(wù),基于Maven的實(shí)現(xiàn)
下面小編就為大家?guī)硪黄獎(jiǎng)?chuàng)建Jersey REST 服務(wù),基于Maven的實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06Spring?AOP?創(chuàng)建代理對(duì)象詳情
這篇文章介紹了Spring?AOP?創(chuàng)建代理對(duì)象詳情,主要介紹AOP?創(chuàng)建代理對(duì)象和上下文相關(guān)的內(nèi)容,下文分享具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05spring無法引入注解及import org.springframework.web.bind.annota
本文主要介紹了spring無法引入注解及import org.springframework.web.bind.annotation.*報(bào)錯(cuò)的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06Java判斷是否為簡(jiǎn)體中文字符的實(shí)現(xiàn)方法
在應(yīng)用開發(fā)中,判斷簡(jiǎn)體中文字符是一個(gè)重要但常被忽視的任務(wù),簡(jiǎn)體中文和繁體中文在字符上有顯著的區(qū)別,因此在某些場(chǎng)景下我們需要判斷輸入的文本是否為簡(jiǎn)體中文,本文將介紹如何使用Java進(jìn)行此判斷,并提供相應(yīng)的代碼示例,幫助開發(fā)者更好地理解這一過程2024-09-09服務(wù)性能優(yōu)化之mybatis-plus開啟與關(guān)閉SQL日志打印方法
這篇文章主要介紹了在Mybatis-plus中開啟和關(guān)閉控制臺(tái)SQL日志打印,在`application.properties`文件中,可以通過配置來實(shí)現(xiàn)SQL日志的開啟和關(guān)閉,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-12-12