




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
對(duì)數(shù)據(jù)庫(kù)的操作第一頁(yè),共五十七頁(yè),編輯于2023年,星期六7.1數(shù)據(jù)源java應(yīng)用程序與數(shù)據(jù)庫(kù)的連接方式有四種,本書(shū)中采用JDBC-ODBC方式連接數(shù)據(jù)庫(kù).這種連接方式分三個(gè)步驟:首先,創(chuàng)建一個(gè)數(shù)據(jù)源,其次,加載JDBC-ODBC驅(qū)動(dòng)程序,第三步,建立一個(gè)到數(shù)據(jù)庫(kù)的連接。數(shù)據(jù)源是對(duì)數(shù)據(jù)庫(kù)的一種映射。我們可以把數(shù)據(jù)源理解為數(shù)據(jù)庫(kù)本身,一個(gè)數(shù)據(jù)源對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)。第二頁(yè),共五十七頁(yè),編輯于2023年,星期六本書(shū)以MicrosoftAccess數(shù)據(jù)庫(kù)為例。假設(shè)已創(chuàng)建了數(shù)據(jù)庫(kù)db.mdb(保存在E:\db.mdb目錄下)。假設(shè)采用的是windows2000操作系統(tǒng),我們?yōu)樵摂?shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)源的步驟如下:第三頁(yè),共五十七頁(yè),編輯于2023年,星期六1.在"管理工具"中選擇"ODBC數(shù)據(jù)源",如圖7-1所示。圖7-1數(shù)據(jù)源ODBC第四頁(yè),共五十七頁(yè),編輯于2023年,星期六2.雙擊"ODBC數(shù)據(jù)源"圖標(biāo),出現(xiàn)如圖7-2所示界面。該圖顯示了"UserDSN"選項(xiàng)卡中的已有數(shù)據(jù)源的名稱(chēng)。圖7-2顯示已有user數(shù)據(jù)源第五頁(yè),共五十七頁(yè),編輯于2023年,星期六3.選擇"SystemDSN"選項(xiàng)卡,單擊"Add"按鈕,增加新的數(shù)據(jù)源,如圖7-3所示。此對(duì)話框,為新增加的數(shù)據(jù)源選擇驅(qū)動(dòng)程序。圖7-3選擇驅(qū)動(dòng)程序第六頁(yè),共五十七頁(yè),編輯于2023年,星期六4.因?yàn)橐L問(wèn)MicrosoftAccess數(shù)據(jù)庫(kù),選擇"MicosoftAccessDriver(*.mdb)"選項(xiàng),單擊"完成"按鈕(為數(shù)據(jù)源選擇了驅(qū)動(dòng)程序),出現(xiàn)了設(shè)置數(shù)據(jù)源具體項(xiàng)目的對(duì)話框,如圖7-4所示。圖7-4配置數(shù)據(jù)源第七頁(yè),共五十七頁(yè),編輯于2023年,星期六5.在"數(shù)據(jù)源名(N)"后的文本框中為數(shù)據(jù)源起一個(gè)名字,這里起的名字是grade(可以起別的名字),點(diǎn)擊"選擇(S)…"按鈕,為數(shù)據(jù)源grade選擇數(shù)據(jù)庫(kù),這里選擇的數(shù)據(jù)庫(kù)是E:\db.mdb。配置情況如圖7-5所示。圖7-5配置情況第八頁(yè),共五十七頁(yè),編輯于2023年,星期六6.最后點(diǎn)擊"確定"按鈕,完成了數(shù)據(jù)源的配置,出現(xiàn)對(duì)話框如圖7-6所示。在該對(duì)話框中,點(diǎn)擊"確定"按鈕,完成數(shù)據(jù)源grade的配置。圖7-6配置完成第九頁(yè),共五十七頁(yè),編輯于2023年,星期六7.2JDBC-ODBC橋接器JDBC-ODBC橋接器就是把應(yīng)用程序與數(shù)據(jù)源連接起來(lái)的驅(qū)動(dòng)程序。因此,創(chuàng)建了數(shù)據(jù)源以后,還要加載JDBC-ODBC橋接器,即加載驅(qū)動(dòng)程序。第十頁(yè),共五十七頁(yè),編輯于2023年,星期六下面是加載驅(qū)動(dòng)程序的方式:try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}chatch(ClassNotFoundExceptione){}
通過(guò)Class類(lèi)的靜態(tài)方法forName(Stringdriver)加載JDBC-ODBC橋接器。第十一頁(yè),共五十七頁(yè),編輯于2023年,星期六7.3數(shù)據(jù)庫(kù)連接創(chuàng)建了數(shù)據(jù)源,加載了驅(qū)動(dòng)程序,應(yīng)用程序還是不能連接到數(shù)據(jù)庫(kù)。應(yīng)用程序要訪問(wèn)數(shù)據(jù)庫(kù),還必須創(chuàng)建一個(gè)到數(shù)據(jù)庫(kù)的連接。即創(chuàng)建一個(gè)連接對(duì)象。下面是創(chuàng)建連接對(duì)象的靜態(tài)方法:publicstaticConnectiongetConnection(Stringurl,Stringuser,Stringpassword)throwsSQLException第十二頁(yè),共五十七頁(yè),編輯于2023年,星期六假設(shè)數(shù)據(jù)源名是“grade”,用戶登錄系統(tǒng)的帳號(hào)是user/password。下面是獲得連接對(duì)象的方法:
Connectionconn=DriverManager.getConnection(“jdbc:odbc:grade”,user,password);或者Connectionconn=DriverManager.getConnection(“jdbc:odbc:grade”);
getConnection()方法是DriverManager類(lèi)的一個(gè)靜態(tài)方法。對(duì)于Access數(shù)據(jù)庫(kù)連接,可以不要帳號(hào)參數(shù)就能建立連接對(duì)象。第十三頁(yè),共五十七頁(yè),編輯于2023年,星期六7.4數(shù)據(jù)庫(kù)事務(wù)處理一般來(lái)說(shuō),數(shù)據(jù)庫(kù)事務(wù)處理分兩種:一種是數(shù)據(jù)查詢(xún),第二種是數(shù)據(jù)更新。數(shù)據(jù)更新包括數(shù)據(jù)插入、修改和刪除。第十四頁(yè),共五十七頁(yè),編輯于2023年,星期六假設(shè)已經(jīng)連接到某數(shù)據(jù)庫(kù),創(chuàng)建的連接對(duì)象是conn。則數(shù)據(jù)查詢(xún)和數(shù)據(jù)更新步驟如下。1.數(shù)據(jù)查詢(xún)通過(guò)以下兩個(gè)步驟,獲得查詢(xún)結(jié)果集rs。(1)創(chuàng)建語(yǔ)句對(duì)象Statementstmt=conn.createStatement(inttype,intconcurrency);
(2)獲得查詢(xún)結(jié)果集Stringsql="select*fromtablenamewhereexpression";//SQL查詢(xún)字符串ResultSetrs=stmt.executeQuery(sql);//獲得結(jié)果集rs第十五頁(yè),共五十七頁(yè),編輯于2023年,星期六2.數(shù)據(jù)更新通過(guò)以下兩個(gè)步驟,實(shí)現(xiàn)數(shù)據(jù)更新。(1).創(chuàng)建語(yǔ)句對(duì)象Statementstmt=conn.createStatement(inttype,intconcurrency);
(2).執(zhí)行更新Stringsql="sqlStatement";//插入或修改或刪除SQL字符串
intnumber=stmt.executeUpdate(sql);//執(zhí)行更新操作第十六頁(yè),共五十七頁(yè),編輯于2023年,星期六說(shuō)明:在數(shù)據(jù)查詢(xún)、數(shù)據(jù)更新事務(wù)中,一般采用無(wú)參的createStatement()方法創(chuàng)建語(yǔ)句對(duì)象。如果事務(wù)是隨機(jī)查詢(xún)、游動(dòng)查詢(xún)和用結(jié)果集更新數(shù)據(jù)庫(kù),則應(yīng)采用createStatement(inttype,intconcurrency)方法創(chuàng)建語(yǔ)句對(duì)象。下面是對(duì)該方法參數(shù)的說(shuō)明。第十七頁(yè),共五十七頁(yè),編輯于2023年,星期六
type的取值決定滾動(dòng)方式,即結(jié)果集中的游標(biāo)是否能上下滾動(dòng)。取值如下:
ResultSet.TYPE_FORWORD_ONLY結(jié)果集的游標(biāo)只能向下滾動(dòng)。
ResultSet.TYPE_SCROLL_INSENSITIVE結(jié)果集的游標(biāo)可以上下移動(dòng),當(dāng)數(shù)據(jù)庫(kù)變化時(shí),當(dāng)前結(jié)果集不變。
ResultSet.TYPE_SCROLL_SENSITIVE返回可滾動(dòng)的結(jié)果集。當(dāng)數(shù)據(jù)庫(kù)變化時(shí),當(dāng)前結(jié)果集同步改變。
concurrency的取值決定是否能用結(jié)果集更新數(shù)據(jù)庫(kù)。concurrency取值:
ResultSet.CONCUR_READ_ONLY不能用結(jié)果集更新數(shù)據(jù)庫(kù)中的表。
ResultSet.CONCUR_UPDATABLE能用結(jié)果集更新數(shù)據(jù)庫(kù)中的表。第十八頁(yè),共五十七頁(yè),編輯于2023年,星期六我們可以使用同一個(gè)Statement對(duì)象來(lái)執(zhí)行查詢(xún)和更新操作(修改/添加/刪除),但是,需要注意,用Statement對(duì)象獲取結(jié)果集的操作,必須在用Statement對(duì)象執(zhí)行更新的操作之前,否則,執(zhí)行更新的操作會(huì)破壞Statement對(duì)象獲取的結(jié)果集。第十九頁(yè),共五十七頁(yè),編輯于2023年,星期六7.5數(shù)據(jù)查詢(xún)按照查詢(xún)的方式不同,將查詢(xún)分為順序查詢(xún)、游動(dòng)查詢(xún)、隨機(jī)查詢(xún)、參數(shù)查詢(xún)、排序查詢(xún)、使用通配符查詢(xún)。第二十頁(yè),共五十七頁(yè),編輯于2023年,星期六7.5.1順序查詢(xún)這種查詢(xún)中,獲得的結(jié)果集(ResultSet對(duì)象)中的游標(biāo)只能一行行地向下移動(dòng)。既不能向上移動(dòng)游標(biāo),
也不能跳行移動(dòng)游標(biāo)。
ResultSet對(duì)象由若干行組成。ResultSet對(duì)象一次只能看到一個(gè)數(shù)據(jù)行,使用next()方法,使游標(biāo)移到下一行記錄。
ResultSet對(duì)象可以用字段索引(第一列是1,第二列是2等等)為參數(shù),獲得對(duì)應(yīng)的字段值(記錄中的數(shù)據(jù)項(xiàng)),如方法getXxx(intcolumnIndex);也可以用字段名為參數(shù),獲得對(duì)應(yīng)的字段值(記錄中的數(shù)據(jù)項(xiàng)),如方法getXxx(StringcolumnName)。ResultSet對(duì)象的常用方法如表7-1所示。第二十一頁(yè),共五十七頁(yè),編輯于2023年,星期六表7-1ResultSet類(lèi)的常用方法返回類(lèi)型方法名稱(chēng)booleannext()bytegetByte(intcolumnIndex)DategetDate(intcolumnIndex)DoublegetDouble(intcolumnIndex)FloatgetFloat(intcolumnIndex)intgetInt(intcolumnIndex)LonggetLong(intcolumnIndex)StringgetString(intcolumnIndex)第二十二頁(yè),共五十七頁(yè),編輯于2023年,星期六bytegetByte(StringcolumnName)DategetDate(StringcolumnName)DoublegetDouble(StringcolumnName)FloatgetFloat(StringcolumnName)intgetInt(StringcolumnName)LonggetLong(StringcolumnName)StringgetString(StringcolumnName)第二十三頁(yè),共五十七頁(yè),編輯于2023年,星期六
[例子7.1]查詢(xún)英語(yǔ)成績(jī)及格的學(xué)生。學(xué)生成績(jī)保存在表(students)中,表結(jié)構(gòu)為sudents(number,name,math,english,phics)。在db.mdb庫(kù)中創(chuàng)建表students。程序結(jié)構(gòu):程序名:ex7_1.jsp程序算法:
1.分別聲明連接類(lèi)型,語(yǔ)句類(lèi)型,結(jié)果集類(lèi)型的變量:con/sql/rs。
2.加載驅(qū)動(dòng)程序"sun.jdbc.odbc.JdbcOdbcDriver"。
3.獲取連接對(duì)象:con4.獲取語(yǔ)句對(duì)象:sql5.獲取結(jié)果集對(duì)象:rs6.輸出表頭
7.輸出結(jié)果集(rs)中的所有記錄第二十四頁(yè),共五十七頁(yè),編輯于2023年,星期六7.5.2游動(dòng)查詢(xún)有時(shí),我們需要在結(jié)果集中前后移動(dòng)游標(biāo),以便獲取某條記錄。這時(shí),我們必須返回一個(gè)可滾動(dòng)的結(jié)果集。為了獲取可滾動(dòng)的結(jié)果集,我們必須使用下述方法先獲得一個(gè)Statement對(duì)象:
Statementstmt=conn.createStatement(inttype,intconcurrency);
通過(guò)上述Statement對(duì)象獲得的結(jié)果集是可滾動(dòng)結(jié)果集??蓾L動(dòng)結(jié)果集(ResultSet)還可用到的方法如下:
第二十五頁(yè),共五十七頁(yè),編輯于2023年,星期六publicbooleanprevious()將游標(biāo)向上移動(dòng),該方法返回boolean型數(shù)據(jù),當(dāng)移動(dòng)結(jié)果集第一行之前時(shí)返回false。publicvoidbeforeFirst()將游標(biāo)移到結(jié)果集的初始位置,即在第一行之前。publicvoidafterLast()將游標(biāo)移到結(jié)果集最后一行之后publicvoidfirst()將游標(biāo)移到結(jié)果集的第一行。publicvoidlast()將游標(biāo)移到結(jié)果集的最后一行。publicbooleanisAfterLast()判斷游標(biāo)是否在最后一行之后。publicbooleanisBeforeFirst()判斷游標(biāo)是否在第一行之前。第二十六頁(yè),共五十七頁(yè),編輯于2023年,星期六publicbooleanisFirst()判斷游標(biāo)是否指向結(jié)果集的第一行。publicbooleanisLast()判斷游標(biāo)是否指向結(jié)果集的最后一行。publicintgetRow()得到當(dāng)前游標(biāo)所指向的行號(hào)。行號(hào)從1開(kāi)始,如果結(jié)果集沒(méi)有行,返回0。publicbooleanabsolute(introw)將游標(biāo)移到參數(shù)row指定的行號(hào)。說(shuō)明:如果row取負(fù)值,就是倒數(shù)的行數(shù)。asolute(-1)表示移到最后一行,asolute(-2)表示移到倒數(shù)第二行。當(dāng)移到第一行前面或最后一行的后面時(shí),該方法返回false。第二十七頁(yè),共五十七頁(yè),編輯于2023年,星期六[例子7.2]從表(students)的最后一行開(kāi)始,以逆序方式輸出記錄。然后單獨(dú)輸出物理表中的第5條記錄。問(wèn)題分析:從題目要求可知,結(jié)果集中的游標(biāo)必須能上下游動(dòng),因此,必須用帶參數(shù)的createStatement(inttype,intconcurrency)方法創(chuàng)建Statement類(lèi)型的對(duì)象。程序結(jié)構(gòu):程序名:ex7_2.jsp第二十八頁(yè),共五十七頁(yè),編輯于2023年,星期六程序算法:1.分別聲明連接類(lèi)型,語(yǔ)句類(lèi)型,結(jié)果集類(lèi)型的變量:con/sql/rs。2.加載驅(qū)動(dòng)程序"sun.jdbc.odbc.JdbcOdbcDriver"。3.獲取連接對(duì)象:con4.獲取語(yǔ)句對(duì)象:sql5.獲取結(jié)果集對(duì)象:rs6.游標(biāo)移到最后一行7.獲取最后一行的行號(hào)8.輸出記錄數(shù)9.輸出表頭10.將游標(biāo)移動(dòng)到最后一行之后11.逆序輸出輸出結(jié)果集(rs)中的所有記錄(從表的最后一行開(kāi)始輸出記錄)12.將游標(biāo)移到第5條記錄13.輸出第5條記錄。第二十九頁(yè),共五十七頁(yè),編輯于2023年,星期六7.5.3隨機(jī)查詢(xún)[例子7.3]從學(xué)生表(students)中隨機(jī)抽取4條記錄,并計(jì)算4條記錄的數(shù)學(xué)成績(jī)的平均值。問(wèn)題分析:產(chǎn)生1到num之間的隨機(jī)數(shù)計(jì)算公式如下:inti=(int)(Math.random()*num+1);i的值是1到num之間的隨機(jī)數(shù)。在程序中,根據(jù)該隨機(jī)數(shù),把游標(biāo)移到相應(yīng)的行,并輸出該行。程序結(jié)構(gòu):程序名:ex7_3.jsp第三十頁(yè),共五十七頁(yè),編輯于2023年,星期六程序算法:
1.分別聲明連接類(lèi)型,語(yǔ)句類(lèi)型,結(jié)果集類(lèi)型的變量:con/sql/rs。2.加載驅(qū)動(dòng)程序"sun.jdbc.odbc.JdbcOdbcDriver"。3.獲取連接對(duì)象:con4.獲取語(yǔ)句對(duì)象:sql5.獲取結(jié)果集對(duì)象:rs6.游標(biāo)移到最后一行7.獲取表中記錄總數(shù):number8.向vector中添加number個(gè)Integer型對(duì)象(該對(duì)象保存了表的行號(hào))。9.輸出表頭10.從vector中抽取四個(gè)數(shù)字對(duì)象,以每個(gè)數(shù)字對(duì)象為行號(hào),輸出該行號(hào)對(duì)應(yīng)的記錄。11.求出4條記錄數(shù)學(xué)成績(jī)的平均值,并輸出平均值。第三十一頁(yè),共五十七頁(yè),編輯于2023年,星期六7.5.4參數(shù)查詢(xún)
[例子7.4]對(duì)學(xué)生表(students)分別按姓名查詢(xún)和按成績(jī)查詢(xún)。問(wèn)題分析:由三個(gè)頁(yè)面完成此功能。一個(gè)頁(yè)面提供查詢(xún)輸入界面;一個(gè)頁(yè)面按姓名查詢(xún)數(shù)據(jù);一個(gè)頁(yè)面按成績(jī)查詢(xún)數(shù)據(jù)。程序結(jié)構(gòu):
ex7_4.jsp頁(yè)面提供查詢(xún)條件輸入窗口,按姓名查詢(xún)時(shí),其姓名參數(shù)被提交給byname.jsp頁(yè)面,按成績(jī)查詢(xún)時(shí),其成績(jī)參數(shù)被提交給byscore.jsp頁(yè)面。byname.jsp頁(yè)面查詢(xún)出指定姓名的學(xué)生;byscore.jsp頁(yè)面查詢(xún)出指定成績(jī)的學(xué)生。三個(gè)頁(yè)面的交互關(guān)系如圖7-7所示。第三十二頁(yè),共五十七頁(yè),編輯于2023年,星期六ex7_4.jsp頁(yè)面byname.jsp頁(yè)面byscore.jsp頁(yè)面按姓名查詢(xún)按分?jǐn)?shù)查詢(xún)圖7-7頁(yè)面交互關(guān)系程序算法:
ex7_4.jsp:1.創(chuàng)建一個(gè)表單,該表單包含一個(gè)文本框,文 本框用于錄入姓名。2.創(chuàng)建一個(gè)表單,該表單包含四個(gè)文本框,四
個(gè)文本框用于錄入英語(yǔ)成績(jī)和3.?dāng)?shù)學(xué)成績(jī)的查詢(xún)范圍。第三十三頁(yè),共五十七頁(yè),編輯于2023年,星期六byname.jsp:1.獲取表單中的姓名參數(shù):name2.分別聲明連接類(lèi)型,語(yǔ)句類(lèi)型,結(jié)果集類(lèi)型的變量:con/sql/rs。3.加載驅(qū)動(dòng)程序"sun.jdbc.odbc.JdbcOdbcDriver"。4.獲取連接對(duì)象:con5.獲取語(yǔ)句對(duì)象:sql6.構(gòu)造SQL語(yǔ)句字符串:condition7.獲取結(jié)果集對(duì)象:rs8.輸出表頭9.輸出結(jié)果集(rs)中的所有記錄第三十四頁(yè),共五十七頁(yè),編輯于2023年,星期六byscore.jsp:
1.獲取表單中的英語(yǔ)和數(shù)學(xué)成績(jī)范圍:englishmax/englishmin;mathmax/mathmin2.分別聲明連接類(lèi)型,語(yǔ)句類(lèi)型,結(jié)果集類(lèi)型的變量:con/sql/rs。3.加載驅(qū)動(dòng)程序"sun.jdbc.odbc.JdbcOdbcDriver"。4.獲取連接對(duì)象:con5.獲取語(yǔ)句對(duì)象:sql6.構(gòu)造SQL語(yǔ)句字符串:condition7.獲取結(jié)果集對(duì)象:rs8.輸出表頭9.輸出結(jié)果集(rs)中的所有記錄第三十五頁(yè),共五十七頁(yè),編輯于2023年,星期六7.5.5排序查詢(xún)可以在SQL語(yǔ)句中使用orderby子句對(duì)查詢(xún)記錄進(jìn)行排序。[例子7.5]對(duì)學(xué)生表(students)分別按姓名、英語(yǔ)成績(jī)、總成績(jī)進(jìn)行排序,輸出成績(jī)。程序結(jié)構(gòu):
ex7_5.jsp頁(yè)面將排序方式提交給byorder.jsp頁(yè)面;byorder.jsp頁(yè)面根據(jù)排序方式,查詢(xún)數(shù)據(jù)并輸出。程序算法:
ex7_5.jsp:
創(chuàng)建一個(gè)表單,包含三個(gè)單選按鈕,每個(gè)單選按鈕代表一種排序方式。
第三十六頁(yè),共五十七頁(yè),編輯于2023年,星期六byorder.jsp:1.從表單中獲取排序方式,保存到變量name中。2.分別聲明連接類(lèi)型,語(yǔ)句類(lèi)型,結(jié)果集類(lèi)型的變量:con/sql/rs。3.加載驅(qū)動(dòng)程序"sun.jdbc.odbc.JdbcOdbcDriver"。4.獲取連接對(duì)象:con5.獲取語(yǔ)句對(duì)象:sql6.構(gòu)造SQL語(yǔ)句字符串(condition),該串指定了記錄的排序方式。7.獲取結(jié)果集對(duì)象:rs8.輸出表頭9.輸出結(jié)果集(rs)中的所有記錄第三十七頁(yè),共五十七頁(yè),編輯于2023年,星期六7.5.6使用通配符查詢(xún)可以用SQL語(yǔ)句操作符"like"進(jìn)行模式匹配。用"%"代替一個(gè)或者多個(gè)字符,用一個(gè)下劃線"_"代替一個(gè)字符。例如,下面的SQL語(yǔ)句查詢(xún)姓氏為"王"的記錄。Select*fromstudentswherenamelike‘王%’第三十八頁(yè),共五十七頁(yè),編輯于2023年,星期六[例子7.6]按姓氏查詢(xún)表(students)。程序結(jié)構(gòu):
ex7_6.jsp頁(yè)面將姓氏參數(shù)提交給byname2.jsp頁(yè)面;byname2.jsp頁(yè)面按姓氏通配符查詢(xún)數(shù)據(jù)。兩頁(yè)面的交互關(guān)系如圖7-8所示。ex7_6.jsp頁(yè)面byname2.jsp頁(yè)面查詢(xún)圖7-8頁(yè)面交互關(guān)系程序算法:
ex7_6.jsp:
創(chuàng)建一個(gè)表單,該表單包含一個(gè)文本框,可在此文本框中錄入姓氏參數(shù)。第三十九頁(yè),共五十七頁(yè),編輯于2023年,星期六byname2.jsp1.獲取姓名參數(shù):name2.創(chuàng)建查詢(xún)通配字符串:name="%"+name+"%"3.分別聲明連接類(lèi)型,語(yǔ)句類(lèi)型,結(jié)果集類(lèi)型的變量:con/sql/rs。4.加載驅(qū)動(dòng)程序"sun.jdbc.odbc.JdbcOdbcDriver"。5.獲取連接對(duì)象:con6.獲取語(yǔ)句對(duì)象:sql7.構(gòu)造SQL語(yǔ)句字符串:condition8.獲取結(jié)果集對(duì)象:rs9.輸出表頭10.輸出結(jié)果集(rs)中的所有記錄
第四十頁(yè),共五十七頁(yè),編輯于2023年,星期六7.6數(shù)據(jù)更新數(shù)據(jù)更新操作包括修改數(shù)據(jù)、添加數(shù)據(jù)、刪除數(shù)據(jù)。7.6.1修改數(shù)據(jù)修改數(shù)據(jù)是根據(jù)表中某一關(guān)鍵字,修改滿足某些條件的記錄。[例子7.7]以姓名為關(guān)鍵字,修改表(students)中的某些數(shù)據(jù)。程序結(jié)構(gòu):
ex7_7.jsp頁(yè)面將要修改的數(shù)據(jù)提交給newResult.jsp頁(yè)面;newResult.jsp頁(yè)面執(zhí)行數(shù)據(jù)修改,并將修改后的表數(shù)據(jù)顯示出來(lái)。兩頁(yè)面的交互關(guān)系如圖7-9所示。第四十一頁(yè),共五十七頁(yè),編輯于2023年,星期六程序算法:ex7_7.jsp1.創(chuàng)建表單,該表單包含4個(gè)文本框,分別用于錄入關(guān)鍵字姓名(name),數(shù)學(xué)成績(jī)(math),英語(yǔ)成績(jī)(english),物理成績(jī)(physics)。2.輸出修改前表中的數(shù)據(jù)。ex7_7.jsp頁(yè)面newResult.jsp頁(yè)面執(zhí)行修改圖7-9頁(yè)面交互關(guān)系第四十二頁(yè),共五十七頁(yè),編輯于2023年,星期六
newResult.jsp:1.從表單中獲取關(guān)鍵字姓名:name2.從表單中獲取修改后的成績(jī):(newMath/newEnglish/newPhysics)3.分別聲明連接類(lèi)型,語(yǔ)句類(lèi)型,結(jié)果集類(lèi)型的變量:con/sql/rs。4.加載驅(qū)動(dòng)程序"sun.jdbc.odbc.JdbcOdbcDriver"。5.獲取連接對(duì)象:con6.獲取語(yǔ)句對(duì)象:sql7.構(gòu)造三個(gè)SQL語(yǔ)句字符串:condition1/condition2/condition38.執(zhí)行修改操作9.顯示修改后的表的記錄。第四十三頁(yè),共五十七頁(yè),編輯于2023年,星期六7.6.2添加數(shù)據(jù)[例子7.8]向表(students)中添加記錄。程序結(jié)構(gòu):
ex7_8.jsp頁(yè)面將錄入的數(shù)據(jù)提交給newDatabase.jsp頁(yè)面;newDatabase.jsp頁(yè)將數(shù)據(jù)添加到表(students)中,并顯示添加數(shù)據(jù)后表中的記錄。兩個(gè)頁(yè)面的交互關(guān)系如圖7-10所示。ex7_8.jsp頁(yè)面newDatabase.jsp頁(yè)面添加記錄圖7-10頁(yè)面交互關(guān)系第四十四頁(yè),共五十七頁(yè),編輯于2023年,星期六程序算法:ex7_8.jsp:1.創(chuàng)建一個(gè)表單,包含5個(gè)文本框,分別用于錄入學(xué)號(hào)(number),姓名(name),數(shù)學(xué)(math),英語(yǔ)(english),物理(physics)成績(jī)。
2.輸出添加記錄前表(students)中的記錄。newDatabase.jsp:1.從表單中獲取錄入的數(shù)據(jù)分別保存到以下變量中:number/name/m/e/p。
2.分別聲明連接類(lèi)型,語(yǔ)句類(lèi)型,結(jié)果集類(lèi)型的變量:con/sql/rs。3.加載驅(qū)動(dòng)程序"sun.jdbc.odbc.JdbcOdbcDriver"。4.獲取連接對(duì)象:con5.獲取語(yǔ)句對(duì)象:sql6.構(gòu)造SQL插入語(yǔ)句字符串:condition。7.執(zhí)行添加操作8.輸出添加記錄后的表中全部數(shù)據(jù)。第四十五頁(yè),共五十七頁(yè),編輯于2023年,星期六7.6.3刪除數(shù)據(jù)[例子7.9]以學(xué)號(hào)為關(guān)鍵字,刪除表(students)中的某些數(shù)據(jù)。程序結(jié)構(gòu):
ex7_9.jsp頁(yè)面將要?jiǎng)h除的關(guān)鍵字值提交給delete.jsp頁(yè)面;delete.jsp頁(yè)面根據(jù)關(guān)鍵字的值,刪除表中的相應(yīng)記錄。兩個(gè)頁(yè)面的交互關(guān)系如圖7-11所示。ex7_8.jsp頁(yè)面delete.jsp頁(yè)面刪除記錄圖7-11頁(yè)面交互關(guān)系第四十六頁(yè),共五十七頁(yè),編輯于2023年,星期六程序算法:ex7_9.jsp:1.創(chuàng)建一個(gè)表單,該表單包含一個(gè)文本框(接受學(xué)號(hào)關(guān)鍵字值的錄入)。2.輸出刪除數(shù)據(jù)前表的數(shù)據(jù)。delete.jsp:1.從表單獲取關(guān)鍵字段學(xué)號(hào)的值:number。2.分別聲明連接類(lèi)型,語(yǔ)句類(lèi)型,結(jié)果集類(lèi)型的變量:con/sql/rs。3.加載驅(qū)動(dòng)程序"sun.jdbc.odbc.JdbcOdbcDriver"。4.獲取連接對(duì)象:con。5.獲取語(yǔ)句對(duì)象:sql。6.構(gòu)造SQL刪除語(yǔ)句字符串:deleteALL。7.執(zhí)行刪除操作。8.輸出刪除記錄后的表數(shù)據(jù)。第四十七頁(yè),共五十七頁(yè),編輯于2023年,星期六7.7分頁(yè)顯示記錄當(dāng)要顯示的數(shù)據(jù)記錄太多時(shí),必須采用分頁(yè)技術(shù)。這里對(duì)數(shù)據(jù)庫(kù)表中的記錄進(jìn)行分頁(yè)顯示。第四十八頁(yè),共五十七頁(yè),編輯于2023年,星期六[例子7.10]分頁(yè)顯示表(students)中的數(shù)據(jù)。問(wèn)題分析:假設(shè)要顯示的總記錄數(shù)為num,每頁(yè)顯示記錄數(shù)為pageSize,則總頁(yè)數(shù)(pageCount)的計(jì)算公式如下:如果num除以pageSize的余數(shù)大于0,則總頁(yè)數(shù)等于num除以pageSize的商加1。如果num除以pageSize的余數(shù)等于0,則總頁(yè)數(shù)等于num除以pageSize的商。即pageCount=(num%pageSize)==0?(num/pageSize):(num/pageSize+1)如果準(zhǔn)備顯示第k頁(yè)的內(nèi)容,應(yīng)當(dāng)把游標(biāo)移到第(k-1)*pageSize+1條記錄處。第四十九頁(yè),共五十七頁(yè),編輯于2023年,星期六程序結(jié)構(gòu):程序名:ex7_10.jsp
程序算法:1.設(shè)置頁(yè)面大?。簆ageSize=8(表示每頁(yè)8條記錄)。2.創(chuàng)建一個(gè)表單,該表單包含一文本框,在此框中輸入客戶想顯示的記錄的頁(yè)碼號(hào)。3.計(jì)算表中記錄總數(shù):numRow。4.計(jì)算分頁(yè)后總頁(yè)數(shù):pageCount。5.從表單中獲取要顯示記錄的頁(yè)碼號(hào):showPage。6.計(jì)算showPage頁(yè)的第一條記錄在表中的行號(hào):posion。7.使游標(biāo)指向posion。8.從當(dāng)前游標(biāo)開(kāi)始,輸出pageSize條記錄。
第五十頁(yè),共五十七頁(yè),編輯于2023年,星期六7.8網(wǎng)上投票[例子7.11]創(chuàng)建一個(gè)網(wǎng)上投票系統(tǒng)。問(wèn)題分析:首先要?jiǎng)?chuàng)建兩個(gè)表。一個(gè)是ip表,該表用來(lái)存放投票人的ip地址,表的結(jié)構(gòu)是ip(ip);一個(gè)是candidate表,該表用來(lái)存放候選人名單及候選人得票數(shù),表的結(jié)構(gòu)是candidate(name,count)。該系統(tǒng)由三個(gè)頁(yè)面組成。一個(gè)頁(yè)面展示投票界面;一個(gè)頁(yè)面將客戶投票選擇保存到candidate表中,實(shí)現(xiàn)投票統(tǒng)計(jì);一個(gè)頁(yè)面顯示投票結(jié)果。第五十一頁(yè),共五十七頁(yè),編輯于2023年,星期六程序結(jié)構(gòu):
ex7_11.jsp頁(yè)面將客戶的投票選擇提交給vote.jsp頁(yè)面;vote.jsp頁(yè)面將客戶的投票選擇保存到candidate表中,并將客戶的ip地址保存到ip表中;showvote.jsp頁(yè)面查看投票結(jié)果。三個(gè)頁(yè)面的交互關(guān)系如圖7-12所示。ex7_11.jsp頁(yè)面vote.jsp頁(yè)面showvote.jsp頁(yè)面投票查看投票結(jié)果圖7-12頁(yè)面交互關(guān)系第五十二頁(yè),共五十七頁(yè),編輯于2023年,星期六程序算法:ex7_11.jsp:1.構(gòu)造一個(gè)StringBuffer類(lèi)型的空對(duì)象:nameList2.分別聲明連接類(lèi)型,語(yǔ)句類(lèi)型,結(jié)果集類(lèi)型的變量:con/sql/rs。3.加載驅(qū)動(dòng)程序"sun.jdbc.odbc.JdbcOdbcDriver"。4.獲取連接對(duì)象:con5.獲取語(yǔ)句對(duì)象:sql6.獲取結(jié)果集對(duì)象:rs7.把構(gòu)成表單的字符串加入nameList對(duì)象中8.把構(gòu)成表格的字符串加入nameList對(duì)象中(在表單中加入一個(gè)表格)9.把構(gòu)成表頭的字符串加入nameList對(duì)象中(表格的表頭)10.把rs中的name值和單選按鈕分別以字符串的格式加入nameList對(duì)象中11.關(guān)閉連接對(duì)象:con12.將nameList對(duì)象中的字符串輸出,即輸出表單(以表格的方式顯示表單數(shù)據(jù)),該表單為客戶提供投票選擇(從第1到12步,創(chuàng)建第1個(gè)表單)13.創(chuàng)建第2個(gè)表單,該表單查看投票情況第五十三頁(yè),共五十七頁(yè),編輯于2023年,星期六vote.jsp:
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度茶樓租賃合同茶樓與茶藝培訓(xùn)學(xué)校合作框架協(xié)議
- 二零二五年度在線教育平臺(tái)師資聘用協(xié)議
- 食用菌種植技術(shù)服務(wù)合同
- 英語(yǔ)語(yǔ)法中的定語(yǔ)從句詳解:九年級(jí)英語(yǔ)語(yǔ)法基礎(chǔ)強(qiáng)化教案
- 幼兒園繪本閱讀感悟分享
- 產(chǎn)品分銷(xiāo)銷(xiāo)售服務(wù)條款及目標(biāo)協(xié)定
- 數(shù)據(jù)驅(qū)動(dòng)的環(huán)保產(chǎn)業(yè)發(fā)展戰(zhàn)略協(xié)議
- 提升職場(chǎng)技能與素質(zhì)
- 數(shù)理化習(xí)題集:高三化學(xué)知識(shí)點(diǎn)強(qiáng)化練習(xí)計(jì)劃
- 家電產(chǎn)品渠道經(jīng)銷(xiāo)協(xié)議
- 2025年黑龍江農(nóng)業(yè)工程職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)及答案1套
- 《勞動(dòng)法常識(shí)(第3版)》中職全套教學(xué)課件
- 2025年勞動(dòng)合同延期補(bǔ)充協(xié)議模板
- 2025年日歷表(含農(nóng)歷、節(jié)假日、記事、A4打印版)
- 《反家庭暴力》課件
- 二零二五年度房地產(chǎn)預(yù)售合同協(xié)議4篇
- 2025-2030年中國(guó)天線行業(yè)市場(chǎng)需求狀況規(guī)劃研究報(bào)告
- 2024年南京旅游職業(yè)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(kù)(頻考版)含答案解析
- 如何提升自我管理能力
- 2025年潛江市城市建設(shè)發(fā)展集團(tuán)招聘工作人員【52人】高頻重點(diǎn)提升(共500題)附帶答案詳解
- 人教版(新)九年級(jí)下冊(cè)化學(xué)全冊(cè)教案教學(xué)設(shè)計(jì)及教學(xué)反思
評(píng)論
0/150
提交評(píng)論