對數(shù)據(jù)庫的操作_第1頁
對數(shù)據(jù)庫的操作_第2頁
對數(shù)據(jù)庫的操作_第3頁
對數(shù)據(jù)庫的操作_第4頁
對數(shù)據(jù)庫的操作_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

對數(shù)據(jù)庫的操作第一頁,共五十七頁,2022年,8月28日7.1數(shù)據(jù)源java應用程序與數(shù)據(jù)庫的連接方式有四種,本書中采用JDBC-ODBC方式連接數(shù)據(jù)庫.這種連接方式分三個步驟:首先,創(chuàng)建一個數(shù)據(jù)源,其次,加載JDBC-ODBC驅動程序,第三步,建立一個到數(shù)據(jù)庫的連接。數(shù)據(jù)源是對數(shù)據(jù)庫的一種映射。我們可以把數(shù)據(jù)源理解為數(shù)據(jù)庫本身,一個數(shù)據(jù)源對應一個數(shù)據(jù)庫。第二頁,共五十七頁,2022年,8月28日本書以MicrosoftAccess數(shù)據(jù)庫為例。假設已創(chuàng)建了數(shù)據(jù)庫db.mdb(保存在E:\db.mdb目錄下)。假設采用的是windows2000操作系統(tǒng),我們?yōu)樵摂?shù)據(jù)庫創(chuàng)建數(shù)據(jù)源的步驟如下:第三頁,共五十七頁,2022年,8月28日1.在"管理工具"中選擇"ODBC數(shù)據(jù)源",如圖7-1所示。圖7-1數(shù)據(jù)源ODBC第四頁,共五十七頁,2022年,8月28日2.雙擊"ODBC數(shù)據(jù)源"圖標,出現(xiàn)如圖7-2所示界面。該圖顯示了"UserDSN"選項卡中的已有數(shù)據(jù)源的名稱。圖7-2顯示已有user數(shù)據(jù)源第五頁,共五十七頁,2022年,8月28日3.選擇"SystemDSN"選項卡,單擊"Add"按鈕,增加新的數(shù)據(jù)源,如圖7-3所示。此對話框,為新增加的數(shù)據(jù)源選擇驅動程序。圖7-3選擇驅動程序第六頁,共五十七頁,2022年,8月28日4.因為要訪問MicrosoftAccess數(shù)據(jù)庫,選擇"MicosoftAccessDriver(*.mdb)"選項,單擊"完成"按鈕(為數(shù)據(jù)源選擇了驅動程序),出現(xiàn)了設置數(shù)據(jù)源具體項目的對話框,如圖7-4所示。圖7-4配置數(shù)據(jù)源第七頁,共五十七頁,2022年,8月28日5.在"數(shù)據(jù)源名(N)"后的文本框中為數(shù)據(jù)源起一個名字,這里起的名字是grade(可以起別的名字),點擊"選擇(S)…"按鈕,為數(shù)據(jù)源grade選擇數(shù)據(jù)庫,這里選擇的數(shù)據(jù)庫是E:\db.mdb。配置情況如圖7-5所示。圖7-5配置情況第八頁,共五十七頁,2022年,8月28日6.最后點擊"確定"按鈕,完成了數(shù)據(jù)源的配置,出現(xiàn)對話框如圖7-6所示。在該對話框中,點擊"確定"按鈕,完成數(shù)據(jù)源grade的配置。圖7-6配置完成第九頁,共五十七頁,2022年,8月28日7.2JDBC-ODBC橋接器JDBC-ODBC橋接器就是把應用程序與數(shù)據(jù)源連接起來的驅動程序。因此,創(chuàng)建了數(shù)據(jù)源以后,還要加載JDBC-ODBC橋接器,即加載驅動程序。第十頁,共五十七頁,2022年,8月28日下面是加載驅動程序的方式:try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}chatch(ClassNotFoundExceptione){}

通過Class類的靜態(tài)方法forName(Stringdriver)加載JDBC-ODBC橋接器。第十一頁,共五十七頁,2022年,8月28日7.3數(shù)據(jù)庫連接創(chuàng)建了數(shù)據(jù)源,加載了驅動程序,應用程序還是不能連接到數(shù)據(jù)庫。應用程序要訪問數(shù)據(jù)庫,還必須創(chuàng)建一個到數(shù)據(jù)庫的連接。即創(chuàng)建一個連接對象。下面是創(chuàng)建連接對象的靜態(tài)方法:publicstaticConnectiongetConnection(Stringurl,Stringuser,Stringpassword)throwsSQLException第十二頁,共五十七頁,2022年,8月28日假設數(shù)據(jù)源名是“grade”,用戶登錄系統(tǒng)的帳號是user/password。下面是獲得連接對象的方法:

Connectionconn=DriverManager.getConnection(“jdbc:odbc:grade”,user,password);或者Connectionconn=DriverManager.getConnection(“jdbc:odbc:grade”);

getConnection()方法是DriverManager類的一個靜態(tài)方法。對于Access數(shù)據(jù)庫連接,可以不要帳號參數(shù)就能建立連接對象。第十三頁,共五十七頁,2022年,8月28日7.4數(shù)據(jù)庫事務處理一般來說,數(shù)據(jù)庫事務處理分兩種:一種是數(shù)據(jù)查詢,第二種是數(shù)據(jù)更新。數(shù)據(jù)更新包括數(shù)據(jù)插入、修改和刪除。第十四頁,共五十七頁,2022年,8月28日假設已經(jīng)連接到某數(shù)據(jù)庫,創(chuàng)建的連接對象是conn。則數(shù)據(jù)查詢和數(shù)據(jù)更新步驟如下。1.數(shù)據(jù)查詢通過以下兩個步驟,獲得查詢結果集rs。(1)創(chuàng)建語句對象Statementstmt=conn.createStatement(inttype,intconcurrency);

(2)獲得查詢結果集Stringsql="select*fromtablenamewhereexpression";//SQL查詢字符串ResultSetrs=stmt.executeQuery(sql);//獲得結果集rs第十五頁,共五十七頁,2022年,8月28日2.數(shù)據(jù)更新通過以下兩個步驟,實現(xiàn)數(shù)據(jù)更新。(1).創(chuàng)建語句對象Statementstmt=conn.createStatement(inttype,intconcurrency);

(2).執(zhí)行更新Stringsql="sqlStatement";//插入或修改或刪除SQL字符串

intnumber=stmt.executeUpdate(sql);//執(zhí)行更新操作第十六頁,共五十七頁,2022年,8月28日說明:在數(shù)據(jù)查詢、數(shù)據(jù)更新事務中,一般采用無參的createStatement()方法創(chuàng)建語句對象。如果事務是隨機查詢、游動查詢和用結果集更新數(shù)據(jù)庫,則應采用createStatement(inttype,intconcurrency)方法創(chuàng)建語句對象。下面是對該方法參數(shù)的說明。第十七頁,共五十七頁,2022年,8月28日

type的取值決定滾動方式,即結果集中的游標是否能上下滾動。取值如下:

ResultSet.TYPE_FORWORD_ONLY結果集的游標只能向下滾動。

ResultSet.TYPE_SCROLL_INSENSITIVE結果集的游標可以上下移動,當數(shù)據(jù)庫變化時,當前結果集不變。

ResultSet.TYPE_SCROLL_SENSITIVE返回可滾動的結果集。當數(shù)據(jù)庫變化時,當前結果集同步改變。

concurrency的取值決定是否能用結果集更新數(shù)據(jù)庫。concurrency取值:

ResultSet.CONCUR_READ_ONLY不能用結果集更新數(shù)據(jù)庫中的表。

ResultSet.CONCUR_UPDATABLE能用結果集更新數(shù)據(jù)庫中的表。第十八頁,共五十七頁,2022年,8月28日我們可以使用同一個Statement對象來執(zhí)行查詢和更新操作(修改/添加/刪除),但是,需要注意,用Statement對象獲取結果集的操作,必須在用Statement對象執(zhí)行更新的操作之前,否則,執(zhí)行更新的操作會破壞Statement對象獲取的結果集。第十九頁,共五十七頁,2022年,8月28日7.5數(shù)據(jù)查詢按照查詢的方式不同,將查詢分為順序查詢、游動查詢、隨機查詢、參數(shù)查詢、排序查詢、使用通配符查詢。第二十頁,共五十七頁,2022年,8月28日7.5.1順序查詢這種查詢中,獲得的結果集(ResultSet對象)中的游標只能一行行地向下移動。既不能向上移動游標,

也不能跳行移動游標。

ResultSet對象由若干行組成。ResultSet對象一次只能看到一個數(shù)據(jù)行,使用next()方法,使游標移到下一行記錄。

ResultSet對象可以用字段索引(第一列是1,第二列是2等等)為參數(shù),獲得對應的字段值(記錄中的數(shù)據(jù)項),如方法getXxx(intcolumnIndex);也可以用字段名為參數(shù),獲得對應的字段值(記錄中的數(shù)據(jù)項),如方法getXxx(StringcolumnName)。ResultSet對象的常用方法如表7-1所示。第二十一頁,共五十七頁,2022年,8月28日表7-1ResultSet類的常用方法返回類型方法名稱booleannext()bytegetByte(intcolumnIndex)DategetDate(intcolumnIndex)DoublegetDouble(intcolumnIndex)FloatgetFloat(intcolumnIndex)intgetInt(intcolumnIndex)LonggetLong(intcolumnIndex)StringgetString(intcolumnIndex)第二十二頁,共五十七頁,2022年,8月28日bytegetByte(StringcolumnName)DategetDate(StringcolumnName)DoublegetDouble(StringcolumnName)FloatgetFloat(StringcolumnName)intgetInt(StringcolumnName)LonggetLong(StringcolumnName)StringgetString(StringcolumnName)第二十三頁,共五十七頁,2022年,8月28日

[例子7.1]查詢英語成績及格的學生。學生成績保存在表(students)中,表結構為sudents(number,name,math,english,phics)。在db.mdb庫中創(chuàng)建表students。程序結構:程序名:ex7_1.jsp程序算法:

1.分別聲明連接類型,語句類型,結果集類型的變量:con/sql/rs。

2.加載驅動程序"sun.jdbc.odbc.JdbcOdbcDriver"。

3.獲取連接對象:con4.獲取語句對象:sql5.獲取結果集對象:rs6.輸出表頭

7.輸出結果集(rs)中的所有記錄第二十四頁,共五十七頁,2022年,8月28日7.5.2游動查詢有時,我們需要在結果集中前后移動游標,以便獲取某條記錄。這時,我們必須返回一個可滾動的結果集。為了獲取可滾動的結果集,我們必須使用下述方法先獲得一個Statement對象:

Statementstmt=conn.createStatement(inttype,intconcurrency);

通過上述Statement對象獲得的結果集是可滾動結果集??蓾L動結果集(ResultSet)還可用到的方法如下:

第二十五頁,共五十七頁,2022年,8月28日publicbooleanprevious()將游標向上移動,該方法返回boolean型數(shù)據(jù),當移動結果集第一行之前時返回false。publicvoidbeforeFirst()將游標移到結果集的初始位置,即在第一行之前。publicvoidafterLast()將游標移到結果集最后一行之后publicvoidfirst()將游標移到結果集的第一行。publicvoidlast()將游標移到結果集的最后一行。publicbooleanisAfterLast()判斷游標是否在最后一行之后。publicbooleanisBeforeFirst()判斷游標是否在第一行之前。第二十六頁,共五十七頁,2022年,8月28日publicbooleanisFirst()判斷游標是否指向結果集的第一行。publicbooleanisLast()判斷游標是否指向結果集的最后一行。publicintgetRow()得到當前游標所指向的行號。行號從1開始,如果結果集沒有行,返回0。publicbooleanabsolute(introw)將游標移到參數(shù)row指定的行號。說明:如果row取負值,就是倒數(shù)的行數(shù)。asolute(-1)表示移到最后一行,asolute(-2)表示移到倒數(shù)第二行。當移到第一行前面或最后一行的后面時,該方法返回false。第二十七頁,共五十七頁,2022年,8月28日[例子7.2]從表(students)的最后一行開始,以逆序方式輸出記錄。然后單獨輸出物理表中的第5條記錄。問題分析:從題目要求可知,結果集中的游標必須能上下游動,因此,必須用帶參數(shù)的createStatement(inttype,intconcurrency)方法創(chuàng)建Statement類型的對象。程序結構:程序名:ex7_2.jsp第二十八頁,共五十七頁,2022年,8月28日程序算法:1.分別聲明連接類型,語句類型,結果集類型的變量:con/sql/rs。2.加載驅動程序"sun.jdbc.odbc.JdbcOdbcDriver"。3.獲取連接對象:con4.獲取語句對象:sql5.獲取結果集對象:rs6.游標移到最后一行7.獲取最后一行的行號8.輸出記錄數(shù)9.輸出表頭10.將游標移動到最后一行之后11.逆序輸出輸出結果集(rs)中的所有記錄(從表的最后一行開始輸出記錄)12.將游標移到第5條記錄13.輸出第5條記錄。第二十九頁,共五十七頁,2022年,8月28日7.5.3隨機查詢[例子7.3]從學生表(students)中隨機抽取4條記錄,并計算4條記錄的數(shù)學成績的平均值。問題分析:產(chǎn)生1到num之間的隨機數(shù)計算公式如下:inti=(int)(Math.random()*num+1);i的值是1到num之間的隨機數(shù)。在程序中,根據(jù)該隨機數(shù),把游標移到相應的行,并輸出該行。程序結構:程序名:ex7_3.jsp第三十頁,共五十七頁,2022年,8月28日程序算法:

1.分別聲明連接類型,語句類型,結果集類型的變量:con/sql/rs。2.加載驅動程序"sun.jdbc.odbc.JdbcOdbcDriver"。3.獲取連接對象:con4.獲取語句對象:sql5.獲取結果集對象:rs6.游標移到最后一行7.獲取表中記錄總數(shù):number8.向vector中添加number個Integer型對象(該對象保存了表的行號)。9.輸出表頭10.從vector中抽取四個數(shù)字對象,以每個數(shù)字對象為行號,輸出該行號對應的記錄。11.求出4條記錄數(shù)學成績的平均值,并輸出平均值。第三十一頁,共五十七頁,2022年,8月28日參數(shù)查詢

[例子7.4]對學生表(students)分別按姓名查詢和按成績查詢。問題分析:由三個頁面完成此功能。一個頁面提供查詢輸入界面;一個頁面按姓名查詢數(shù)據(jù);一個頁面按成績查詢數(shù)據(jù)。程序結構:

ex7_4.jsp頁面提供查詢條件輸入窗口,按姓名查詢時,其姓名參數(shù)被提交給byname.jsp頁面,按成績查詢時,其成績參數(shù)被提交給byscore.jsp頁面。byname.jsp頁面查詢出指定姓名的學生;byscore.jsp頁面查詢出指定成績的學生。三個頁面的交互關系如圖7-7所示。第三十二頁,共五十七頁,2022年,8月28日ex7_4.jsp頁面byname.jsp頁面byscore.jsp頁面按姓名查詢按分數(shù)查詢圖7-7頁面交互關系程序算法:

ex7_4.jsp:1.創(chuàng)建一個表單,該表單包含一個文本框,文 本框用于錄入姓名。2.創(chuàng)建一個表單,該表單包含四個文本框,四

個文本框用于錄入英語成績和3.數(shù)學成績的查詢范圍。第三十三頁,共五十七頁,2022年,8月28日byname.jsp:1.獲取表單中的姓名參數(shù):name2.分別聲明連接類型,語句類型,結果集類型的變量:con/sql/rs。3.加載驅動程序"sun.jdbc.odbc.JdbcOdbcDriver"。4.獲取連接對象:con5.獲取語句對象:sql6.構造SQL語句字符串:condition7.獲取結果集對象:rs8.輸出表頭9.輸出結果集(rs)中的所有記錄第三十四頁,共五十七頁,2022年,8月28日byscore.jsp:

1.獲取表單中的英語和數(shù)學成績范圍:englishmax/englishmin;mathmax/mathmin2.分別聲明連接類型,語句類型,結果集類型的變量:con/sql/rs。3.加載驅動程序"sun.jdbc.odbc.JdbcOdbcDriver"。4.獲取連接對象:con5.獲取語句對象:sql6.構造SQL語句字符串:condition7.獲取結果集對象:rs8.輸出表頭9.輸出結果集(rs)中的所有記錄第三十五頁,共五十七頁,2022年,8月28日排序查詢可以在SQL語句中使用orderby子句對查詢記錄進行排序。[例子7.5]對學生表(students)分別按姓名、英語成績、總成績進行排序,輸出成績。程序結構:

ex7_5.jsp頁面將排序方式提交給byorder.jsp頁面;byorder.jsp頁面根據(jù)排序方式,查詢數(shù)據(jù)并輸出。程序算法:

ex7_5.jsp:

創(chuàng)建一個表單,包含三個單選按鈕,每個單選按鈕代表一種排序方式。

第三十六頁,共五十七頁,2022年,8月28日byorder.jsp:1.從表單中獲取排序方式,保存到變量name中。2.分別聲明連接類型,語句類型,結果集類型的變量:con/sql/rs。3.加載驅動程序"sun.jdbc.odbc.JdbcOdbcDriver"。4.獲取連接對象:con5.獲取語句對象:sql6.構造SQL語句字符串(condition),該串指定了記錄的排序方式。7.獲取結果集對象:rs8.輸出表頭9.輸出結果集(rs)中的所有記錄第三十七頁,共五十七頁,2022年,8月28日7.5.6使用通配符查詢可以用SQL語句操作符"like"進行模式匹配。用"%"代替一個或者多個字符,用一個下劃線"_"代替一個字符。例如,下面的SQL語句查詢姓氏為"王"的記錄。Select*fromstudentswherenamelike‘王%’第三十八頁,共五十七頁,2022年,8月28日[例子7.6]按姓氏查詢表(students)。程序結構:

ex7_6.jsp頁面將姓氏參數(shù)提交給byname2.jsp頁面;byname2.jsp頁面按姓氏通配符查詢數(shù)據(jù)。兩頁面的交互關系如圖7-8所示。ex7_6.jsp頁面byname2.jsp頁面查詢圖7-8頁面交互關系程序算法:

ex7_6.jsp:

創(chuàng)建一個表單,該表單包含一個文本框,可在此文本框中錄入姓氏參數(shù)。第三十九頁,共五十七頁,2022年,8月28日byname2.jsp1.獲取姓名參數(shù):name2.創(chuàng)建查詢通配字符串:name="%"+name+"%"3.分別聲明連接類型,語句類型,結果集類型的變量:con/sql/rs。4.加載驅動程序"sun.jdbc.odbc.JdbcOdbcDriver"。5.獲取連接對象:con6.獲取語句對象:sql7.構造SQL語句字符串:condition8.獲取結果集對象:rs9.輸出表頭10.輸出結果集(rs)中的所有記錄

第四十頁,共五十七頁,2022年,8月28日7.6數(shù)據(jù)更新數(shù)據(jù)更新操作包括修改數(shù)據(jù)、添加數(shù)據(jù)、刪除數(shù)據(jù)。7.6.1修改數(shù)據(jù)修改數(shù)據(jù)是根據(jù)表中某一關鍵字,修改滿足某些條件的記錄。[例子7.7]以姓名為關鍵字,修改表(students)中的某些數(shù)據(jù)。程序結構:

ex7_7.jsp頁面將要修改的數(shù)據(jù)提交給newResult.jsp頁面;newResult.jsp頁面執(zhí)行數(shù)據(jù)修改,并將修改后的表數(shù)據(jù)顯示出來。兩頁面的交互關系如圖7-9所示。第四十一頁,共五十七頁,2022年,8月28日程序算法:ex7_7.jsp1.創(chuàng)建表單,該表單包含4個文本框,分別用于錄入關鍵字姓名(name),數(shù)學成績(math),英語成績(english),物理成績(physics)。2.輸出修改前表中的數(shù)據(jù)。ex7_7.jsp頁面newResult.jsp頁面執(zhí)行修改圖7-9頁面交互關系第四十二頁,共五十七頁,2022年,8月28日

newResult.jsp:1.從表單中獲取關鍵字姓名:name2.從表單中獲取修改后的成績:(newMath/newEnglish/newPhysics)3.分別聲明連接類型,語句類型,結果集類型的變量:con/sql/rs。4.加載驅動程序"sun.jdbc.odbc.JdbcOdbcDriver"。5.獲取連接對象:con6.獲取語句對象:sql7.構造三個SQL語句字符串:condition1/condition2/condition38.執(zhí)行修改操作9.顯示修改后的表的記錄。第四十三頁,共五十七頁,2022年,8月28日添加數(shù)據(jù)[例子7.8]向表(students)中添加記錄。程序結構:

ex7_8.jsp頁面將錄入的數(shù)據(jù)提交給newDatabase.jsp頁面;newDatabase.jsp頁將數(shù)據(jù)添加到表(students)中,并顯示添加數(shù)據(jù)后表中的記錄。兩個頁面的交互關系如圖7-10所示。ex7_8.jsp頁面newDatabase.jsp頁面添加記錄圖7-10頁面交互關系第四十四頁,共五十七頁,2022年,8月28日程序算法:ex7_8.jsp:1.創(chuàng)建一個表單,包含5個文本框,分別用于錄入學號(number),姓名(name),數(shù)學(math),英語(english),物理(physics)成績。

2.輸出添加記錄前表(students)中的記錄。newDatabase.jsp:1.從表單中獲取錄入的數(shù)據(jù)分別保存到以下變量中:number/name/m/e/p。

2.分別聲明連接類型,語句類型,結果集類型的變量:con/sql/rs。3.加載驅動程序"sun.jdbc.odbc.JdbcOdbcDriver"。4.獲取連接對象:con5.獲取語句對象:sql6.構造SQL插入語句字符串:condition。7.執(zhí)行添加操作8.輸出添加記錄后的表中全部數(shù)據(jù)。第四十五頁,共五十七頁,2022年,8月28日刪除數(shù)據(jù)[例子7.9]以學號為關鍵字,刪除表(students)中的某些數(shù)據(jù)。程序結構:

ex7_9.jsp頁面將要刪除的關鍵字值提交給delete.jsp頁面;delete.jsp頁面根據(jù)關鍵字的值,刪除表中的相應記錄。兩個頁面的交互關系如圖7-11所示。ex7_8.jsp頁面delete.jsp頁面刪除記錄圖7-11頁面交互關系第四十六頁,共五十七頁,2022年,8月28日程序算法:ex7_9.jsp:1.創(chuàng)建一個表單,該表單包含一個文本框(接受學號關鍵字值的錄入)。2.輸出刪除數(shù)據(jù)前表的數(shù)據(jù)。delete.jsp:1.從表單獲取關鍵字段學號的值:number。2.分別聲明連接類型,語句類型,結果集類型的變量:con/sql/rs。3.加載驅動程序"sun.jdbc.odbc.JdbcOdbcDriver"。4.獲取連接對象:con。5.獲取語句對象:sql。6.構造SQL刪除語句字符串:deleteALL。7.執(zhí)行刪除操作。8.輸出刪除記錄后的表數(shù)據(jù)。第四十七頁,共五十七頁,2022年,8月28日7.7分頁顯示記錄當要顯示的數(shù)據(jù)記錄太多時,必須采用分頁技術。這里對數(shù)據(jù)庫表中的記錄進行分頁顯示。第四十八頁,共五十七頁,2022年,8月28日[例子7.10]分頁顯示表(students)中的數(shù)據(jù)。問題分析:假設要顯示的總記錄數(shù)為num,每頁顯示記錄數(shù)為pageSize,則總頁數(shù)(pageCount)的計算公式如下:如果num除以pageSize的余數(shù)大于0,則總頁數(shù)等于num除以pageSize的商加1。如果num除以pageSize的余數(shù)等于0,則總頁數(shù)等于num除以pageSize的商。即pageCount=(num%pageSize)==0?(num/pageSize):(num/pageSize+1)如果準備顯示第k頁的內容,應當把游標移到第(k-1)*pageSize+1條記錄處。第四十九頁,共五十七頁,2022年,8月28日程序結構:程序名:ex7_10.jsp

程序算法:1.設置頁面大?。簆ageSize=8(表示每頁8條記錄)。2.創(chuàng)建一個表單,該表單包含一文本框,在此框中輸入客戶想顯示的記錄的頁碼號。3.計算表中記錄總數(shù):numRow。4.計算分頁后總頁數(shù):pageCount。5.從表單中獲取要顯示記錄的頁碼號:showPage。6.計算showPage頁的第一條記錄在表中的行號:posion。7.使游標指向posion。8.從當前游標開始,輸出pageSize條記錄。

第五十頁,共五十七頁,2022年,8月28日7.8網(wǎng)上投票[例子7.11]創(chuàng)建一個網(wǎng)上投票系統(tǒng)。問題分析:首先要創(chuàng)建兩個表。一個是ip表,該表用來存放投票人的ip地址,表的結構是ip(ip);一個是candidate表,該表用來存放候選人名單及候選人得票數(shù),表的結構是candidate(name,count)。該系統(tǒng)由三個頁面組成。一個頁面展示投票界面;一個頁面將客戶投票選擇保存到candidate表中,實現(xiàn)投票統(tǒng)計;一個頁面顯示投票結果。第五十一頁,共五十七頁,2022年,8月28日程序結構:

ex7_11.jsp頁面將客戶的投票選擇提交給vote.jsp頁面;vote.jsp頁面將客戶的投票選擇保存到candidate表中,并將客戶的ip地址保存到ip表中;showvote.jsp頁面查看投票結果。三個頁面的交互關系如圖7-12所示。ex7_11.jsp頁面vote.jsp頁面showvote.jsp頁面投票查看投票結果圖7-12頁面交互關系第五十二頁,共五十七頁,2022年,8月28日程序算法:ex7_11.jsp:1.構造一個StringBuffer類型的空對象:nameList2.分別聲明連接類型,語句類型,結果集類型的變量:con/sql/rs。3.加載驅動程序"sun.jdbc.odbc.JdbcOdbcDriver"。4.獲取連接對象:con5.獲取語句對象:sql6.獲取結果集對象:rs7.把構成表單的字符串加入nameList對象中8.把構成表格的字符串加入nameList對象中(在表單中加入一個表格)9.把構成表頭的字符串加入nameList對象中(表格的表頭)10.把rs中的name值和單選按鈕分別以字符串的格式加入nameList對象中11.關閉連接對象:con12.將nameList對象中的字符串輸出,即輸出表單(以表格的方式顯示表單數(shù)據(jù)),該表單為客戶提供投票選擇(從第1到12步,創(chuàng)建第1個表單)13.創(chuàng)建第2個表單,該表單查看投票情況第五十三頁,共五十七頁,2022年,8月28日vote.jsp:1.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論