第三部分java應(yīng)用程序設(shè)計(jì)數(shù)據(jù)庫(kù)編程_第1頁(yè)
第三部分java應(yīng)用程序設(shè)計(jì)數(shù)據(jù)庫(kù)編程_第2頁(yè)
第三部分java應(yīng)用程序設(shè)計(jì)數(shù)據(jù)庫(kù)編程_第3頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論