


版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
JAVA應(yīng)用開發(fā)詳解第17章:Java數(shù)據(jù)庫(kù)編程
——PreparedStatement接口MLDN軟件教學(xué)研發(fā)部本章目標(biāo)掌握PreparedStatement接口的工作原理可以使用PreparedStatement進(jìn)行數(shù)據(jù)庫(kù)的更新及查詢操作PreparedStatement簡(jiǎn)介PreparedStatement是Statement的子接口,屬于預(yù)處理操作,與直接使用Statement不同的是,PreparedStatement在操作時(shí),是先在數(shù)據(jù)表之中準(zhǔn)備好了一條SQL語(yǔ)句,但是此SQL語(yǔ)句的具體內(nèi)容暫時(shí)不設(shè)置,而是之后再進(jìn)行設(shè)置,以插入數(shù)據(jù)為例,使用PreparedStatement插入數(shù)據(jù)時(shí),數(shù)據(jù)表中的指針首先指向最后一條數(shù)據(jù)之后,但是里面的內(nèi)容是不知道的,而是等待用戶分別設(shè)置。PreparedStatement的基本操作方法No.方法類型描述1intexecuteUpdate()throwsSQLException普通執(zhí)行設(shè)置的預(yù)處理SQL語(yǔ)句2voidsetInt(intparameterIndex,intx)throwsSQLException普通指定要設(shè)置的索引編號(hào),并設(shè)置整數(shù)內(nèi)容3voidsetFloat(intparameterIndex,floatx)throwsSQLException普通指定要設(shè)置的索引編號(hào),并設(shè)置浮點(diǎn)數(shù)內(nèi)容4voidsetString(intparameterIndex,Stringx)throwsSQLException普通指定要設(shè)置的索引編號(hào),并設(shè)置字符串內(nèi)容5voidsetDate(intparameterIndex,Datex)throwsSQLException普通指定要設(shè)置的索引編號(hào),并設(shè)置java.sql.Date類型的日期內(nèi)容注意:設(shè)置日期格式的問(wèn)題在PreparedStatement中定義了setDate()方法,此方法可以設(shè)置日期內(nèi)容,但是此方法使用時(shí),后面的Date類型變量是java.sql.Date,而不是java.util.Date,所以如果要想將一個(gè)java.util.Date類型的內(nèi)容變?yōu)閖ava.sql.Date類型的內(nèi)容,應(yīng)該使用如下的語(yǔ)句形式: Stringbirthday="2007-08-27"; //生日
java.util.Datetemp=null; //聲明一個(gè)Date對(duì)象
//通過(guò)SimpleDateFormat類將字一個(gè)字符串變?yōu)閖ava.util.Date類型
temp=newSimpleDateFormat("yyyy-MM-dd").parse(birthday);
//通過(guò)java.util.Date取出具體的日期數(shù),并將其變?yōu)閖ava.sql.Date類型
java.sql.Datebir=newjava.sql.Date(temp.getTime());執(zhí)行插入操作 publicstaticvoidmain(String[]args)throwsException{ ... PreparedStatementpstmt=null; //數(shù)據(jù)庫(kù)操作 Stringname="李興華"; //姓名 Stringpassword=""; //密碼 intage=30; //年齡 Stringsex="男"; //性別 Stringbirthday="2007-08-27"; //生日 java.util.Datetemp=null; //聲明一個(gè)Date對(duì)象 //通過(guò)SimpleDateFormat類將字一個(gè)字符串變?yōu)閖ava.util.Date類型 temp=newSimpleDateFormat("yyyy-MM-dd").parse(birthday); //通過(guò)java.util.Date取出具體的日期數(shù),并將其變?yōu)閖ava.sql.Date類型 java.sql.Datebir=newjava.sql.Date(temp.getTime()); Stringsql="INSERTINTOuser(name,password,age,sex,birthday)" +"VALUES(?,?,?,?,?)"; //編寫預(yù)處理SQL ... pstmt=conn.prepareStatement(sql); //實(shí)例化PreparedStatement pstmt.setString(1,name); //設(shè)置第一個(gè)“?”的內(nèi)容 pstmt.setString(2,password); //設(shè)置第二個(gè)“?”的內(nèi)容 pstmt.setInt(3,age); //設(shè)置第三個(gè)“?”的內(nèi)容 pstmt.setString(4,sex); //設(shè)置第四個(gè)“?”的內(nèi)容 pstmt.setDate(5,bir); //設(shè)置第五個(gè)“?”的內(nèi)容 pstmt.executeUpdate(); //執(zhí)行數(shù)據(jù)庫(kù)更新操作,不需要sql pstmt.close(); //操作關(guān)閉 conn.close(); //數(shù)據(jù)庫(kù)關(guān)閉 }}模糊查詢
public
static
voidmain(String[]args)throwsException{ Connectionconn=null; //數(shù)據(jù)庫(kù)連接
PreparedStatementpstmt=null; //數(shù)據(jù)庫(kù)操作
StringkeyWord="李"; //設(shè)置查詢關(guān)鍵字
ResultSetrs=null; //保存查詢結(jié)果
Stringsql="SELECTid,name,password,age,sex,birthday"+
"FROMuserWHEREnameLIKE?ORpasswordLIKE?ORsexLIKE?"; ... pstmt.setString(1,"%"+keyWord+"%"); //設(shè)置第一個(gè)“?”,要使用模糊查詢
pstmt.setString(2,"%"+keyWord+"%"); //設(shè)置第二個(gè)“?”,要使用模糊查詢
pstmt.setString(3,"%"+keyWord+"%"); //設(shè)置第三個(gè)“?”,要使用模糊查詢
rs=pstmt.executeQuery(); //實(shí)例化ResultSet對(duì)象
while(rs.next()){ //指針向下移動(dòng)
intid=rs.getInt(1); //取得id內(nèi)容
Stringname=rs.getString(2); //取得name內(nèi)容
Stringpass=rs.getString(3); //取得password內(nèi)容
intage=rs.getInt(4); //取得age內(nèi)容
Stringsex=rs.getString(5); //取得sex內(nèi)容
java.util.Dated=rs.getDate(6); //取得birthday內(nèi)容
System.out.print("編號(hào):"+id+";"); System.out.print("姓名:"+name+";"); System.out.print("密碼:"+pass+";"); System.out.print("年齡:"+age+";"); System.out.print("性別:"+sex+";"); System.out.println("生日:"+d); System.out.println("---------------------------"); } ...查詢?nèi)恳陨铣绦蜻M(jìn)行的是模糊查詢,在模糊查詢中使用“%”表示通配符,但是這個(gè)通配符是要在設(shè)置具體查詢內(nèi)容(setXxx()方法調(diào)用)的時(shí)候使用才使用。如果,此時(shí)只是查詢?nèi)康脑?,則不用再設(shè)置任何的內(nèi)容,如下所示: Stringsql="SELECTid,name,password
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZZB 3589-2023 潔凈轉(zhuǎn)子泵標(biāo)準(zhǔn)
- 2025年度礦山新能源利用合作開發(fā)協(xié)議
- 二零二五年度船舶租賃與船舶融資租賃合同
- 二零二五年度金融產(chǎn)品創(chuàng)新增資協(xié)議
- 2025年度酒店品牌授權(quán)及加盟合作協(xié)議
- 二零二五年度有機(jī)果園使用權(quán)及品牌授權(quán)合同
- 二零二五美容院轉(zhuǎn)讓合同包含員工培訓(xùn)體系與職業(yè)發(fā)展規(guī)劃
- 2025年度旅游度假區(qū)合租商鋪合作協(xié)議
- 二零二五年度知識(shí)產(chǎn)權(quán)標(biāo)準(zhǔn)化與認(rèn)證顧問(wèn)合同
- 二零二五年度科技園區(qū)出租房承包管理協(xié)議
- 高處作業(yè)吊籃危險(xiǎn)源辨識(shí)及風(fēng)險(xiǎn)評(píng)價(jià)表
- 2024云游戲平臺(tái)計(jì)費(fèi)系統(tǒng)計(jì)費(fèi)性能技術(shù)要求和測(cè)試方法
- 《和大人一起讀》試題及答案共4套
- 第一課 踏上強(qiáng)國(guó)之路 復(fù)習(xí)課件 統(tǒng)編版道德與法治九年級(jí)上冊(cè)
- 部編版語(yǔ)文九年級(jí)下冊(cè)-第三單元古詩(shī)文默寫-理解性默寫(排版-附答案)
- 數(shù)學(xué)史與數(shù)學(xué)文化教育
- 雨污水管道施工工藝
- 圖紙疑問(wèn)匯總表
- 茯苓栽培技術(shù)
- 空氣能熱泵基礎(chǔ)施工方案
- 起重機(jī)械安全規(guī)程-第部分完整
評(píng)論
0/150
提交評(píng)論