可以通過調用 Connection 對象的 prepareStatement(String sql) 方法獲取 PreparedStatement 對象
PreparedStatement 接口是 Statement 的子接口,它表示一條預編譯過的 SQL 語句
PreparedStatement 對象所代表的 SQL 語句中的參數用問號(?)來表示(?在SQL中表示占位符),調用 PreparedStatement 對象的 setXxx() 方法來設置這些參數. setXxx() 方法有兩個參數,第一個參數是要設置的 SQL 語句中的參數的索引(從 1 開始),第二個是設置的 SQL 語句中的參數的值
代碼的可讀性和可維護性。
PreparedStatement 能最大可能提高性能:
DBServer會對預編譯語句提供性能優化。因為預編譯語句有可能被重復調用,所以語句在被DBServer的編譯器編譯后的執行代碼被緩存下來,那么下次調用時只要是相同的預編譯語句就不需要編譯,只要將參數直接傳入編譯過的語句執行代碼中就會得到執行。
在statement語句中,即使是相同操作但因為數據內容不一樣,所以整個語句本身不能匹配,沒有緩存語句的意義.事實是沒有數據庫會對普通語句編譯后的執行代碼緩存。這樣每執行一次都要對傳入的語句編譯一次。
(語法檢查,語義檢查,翻譯成二進制命令,緩存)
PreparedStatement 可以防止 SQL 注入
PreparedStatement常用的方法:
void setObject(int parameterIndex, Object x, int targetSqlType)
parameterIndex the first parameter is 1, the second is 2, …占位符參數索引是從1開始的
其余也是如此:
void setInt(int parameterIndex, int x)
void setLong(int parameterIndex, long x)
void setString(int parameterIndex, String x)
void setBlob (int parameterIndex, Blob x)
void setDate(int parameterIndex, java.sql.Date x, Calendar cal)
執行操作:
packagecom.atmf;importjava.io.IOException;importjava.io.InputStream;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.SQLException;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.Properties;importorg.junit.Test;publicclassSumUP{@TestpublicvoidgetConnection(){Connectioncon=null;PreparedStatementps=null;try{//1,加載配置文件InputStreamis=ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");Propertiespr=newProperties();pr.load(is);//2,讀取配置信息Stringuser=pr.getProperty("user");Stringpassword=pr.getProperty("password");Stringurl=pr.getProperty("url");StringdriverClass=pr.getProperty("driverClass");//3.加載驅動Class.forName(driverClass);//4,獲取連接con=DriverManager.getConnection(url,user,password);Stringsql="insertintocustomers(name,birth)value(?,?)";//預編譯sql語句,得到PreparedStatement對象ps=con.prepareStatement(sql);//5,填充占位符ps.setString(1,"三明治");SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");Datedate=sdf.parse("2020-11-02");ps.setDate(2,newjava.sql.Date(date.getTime()));//6,執行操作ps.execute();}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}finally{//7,關閉資源try{if(ps!=null)ps.close();}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}try{if(con!=null)con.close();}catch(Exceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}}
配置信息:jdbc.properties文件
user=root
password=123456
url=jdbc:MySQL://localhost:3306/students
driverClass=com.mysql.jdbc.Driver
執行結果:
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
制造業危機有哪些?1、大量中低端制造規模以上的工廠被關閉或轉移2、大工廠已經成功轉型,不再大規模招人3、勞動密集型企業必須轉型,高科技工作崗位很少為什么制造業會出現危機?原因是什么?1、高成本中國的制造成本與美國,韓國相同。我們的經濟發展遠不如這些地區,但成本與它們相同。將勞動工資水平、勞動生產率、能源成本和匯率水平綜合起來形成這樣一個指數,美國為100,中國為96,韓國為102,在同一范圍內,因...
(資料圖)關于雪中悍刀行講的是什么的知識大家了解嗎?以下就是小編整理的關于雪中悍刀行講的是什么的介紹,希望可以給到大家一些參考,一起來了解下吧!1、該小說講述一個關于廟堂權爭與刀劍交錯的時代,一個暗潮涌動粉墨登場的江湖。2、初始版內容:有個白狐兒臉,佩雙刀繡冬春雷,要做那天下第一;湖底有白發老魁愛吃葷;缺門牙老仆背劍匣;山上有個騎青牛的年輕師叔祖,不敢下山;有個騎大貓扛向日葵不太冷的少女殺手。3、...
mlf俗稱“麻辣粉”,即中期借貸便利,是我國央行采取的一種創新型貨幣政策工具,也是央行提供中期基礎貨幣的貨幣政策工具,對象為符合宏觀審慎管理要求的商業銀行、政策性銀行。理解mlf的概念,還要從以下幾個方面入手。1、增加貨幣供應量。mlf是央行向社會注入流動性的一種方式,通過向市場提供中期基礎性貨幣,增加貨幣供應量,在一定程度上可以緩解小微企業、三農等需要扶持行業融資難的問題...