Java中的PreparedStatement對象使用解析
Java的PreparedStatement對象
與Statement對象的區(qū)別
引入PreparedStatement對象是因為使用Statement對象容易被SQL注入,而PreparedStatement對象采用了預(yù)編譯的方法,會對傳入的參數(shù)進(jìn)行強(qiáng)制類型檢查和安全檢查,進(jìn)而避免了SQL注入的產(chǎn)生,使得操作更加安全(具體見博客內(nèi)的文章SQL注入簡介)
操作方法
編寫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)建對象的方法不同
- conn.createStatement();
- conn.prepareStatement(sql);
- PrepareStatement中使用預(yù)編譯SQL,先寫sql,然后不執(zhí)行
- 傳遞參數(shù)方法中第一個參數(shù)表示第幾個占位符,第二個參數(shù)則為該占位符的要傳遞的值
注意事項
占位符不能代替字段名
示例
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"); // 注意點:sql.Date是數(shù)據(jù)庫中使用的時間,java,sql.Date() // util.Date是java中使用的時間,new Date().getTime()獲得當(dāng)前時間戳 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對象使用解析的文章就介紹到這了,更多相關(guān)Java的PreparedStatement對象內(nèi)容請搜索腳本之家以前的文章或繼續(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ù)庫連接PreparedStatement的使用詳解
- 詳解Java的JDBC中Statement與PreparedStatement對象
相關(guān)文章
如何使用Spring?integration在Springboot中集成Mqtt詳解
MQTT是多個客戶端通過一個中央服務(wù)器傳遞信息的多對多協(xié)議,能高效地將信息分發(fā)給一個或多個訂閱者,下面這篇文章主要給大家介紹了關(guān)于如何使用Spring?integration在Springboot中集成Mqtt的相關(guān)資料,需要的朋友可以參考下2023-02-02創(chuàng)建Jersey REST 服務(wù),基于Maven的實現(xiàn)
下面小編就為大家?guī)硪黄獎?chuàng)建Jersey REST 服務(wù),基于Maven的實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06spring無法引入注解及import org.springframework.web.bind.annota
本文主要介紹了spring無法引入注解及import org.springframework.web.bind.annotation.*報錯的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06服務(wù)性能優(yōu)化之mybatis-plus開啟與關(guān)閉SQL日志打印方法
這篇文章主要介紹了在Mybatis-plus中開啟和關(guān)閉控制臺SQL日志打印,在`application.properties`文件中,可以通過配置來實現(xiàn)SQL日志的開啟和關(guān)閉,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-12-12