信息第五章-p JDBC數(shù)據(jù)庫編程_第1頁
信息第五章-p JDBC數(shù)據(jù)庫編程_第2頁
信息第五章-p JDBC數(shù)據(jù)庫編程_第3頁
信息第五章-p JDBC數(shù)據(jù)庫編程_第4頁
信息第五章-p JDBC數(shù)據(jù)庫編程_第5頁
免費預(yù)覽已結(jié)束,剩余21頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

任務(wù):用戶及成績管理界面,可以

新用戶,信息,用戶信息保系統(tǒng)提供用戶也可更改用戶自已存到數(shù)據(jù)庫中。任務(wù):用戶及成績管理結(jié)束時,都要更玩家參與

,每次新各玩家的

總成績,并記錄日志,玩家可以隨時查看自已的歷史成績。用戶信息表(userinfo)字段名稱說明類型長度約束UserID用戶IDVarchar10主鍵UserName用戶名稱Varchar20FacePic頭象號IntegerPassWord用戶預(yù)設(shè)Varchar20UserType用戶類型Varchar10管理/玩家GenderChar2IsMarried用戶級別Varchar10/未婚/已婚/離異HowOldIntegerCity城市Varchar20Address地址Varchar100NoVarchar20電子郵箱Varchar30UserDesc用戶描述Varchar500RegisterTime冊注時間DateTimePlayNum次數(shù)IntegerWinNum贏次數(shù)IntegerGameScore累計分IntegerRecentGame最近一次時間DateTime室信息(roominfo)字段名稱說明類型長度約束RoomName廳名稱Varchar20主鍵RoomType廳類型Varchar10高手/中級/新手ManageBy管理人Varchar30RoomDesc室介紹Varchar200事件日志表(userlog)字段名稱說明類型長度約束LogId日志序號Integer主鍵UserID用戶IDVarchar20外鍵EventType事件分類Varchar10EventDesc事件描述Varchar100EventTime發(fā)生時間DateTime方案:功能分析與設(shè)計要點連接數(shù)據(jù)庫新用戶用戶信息的查看與更新錯誤處理技術(shù)連接數(shù)據(jù)庫實現(xiàn)“連接數(shù)據(jù)庫代碼”的重用,把連接數(shù)據(jù)庫的程序封裝到一個類中,用靜態(tài)方法實現(xiàn)連接數(shù)據(jù)庫功能,供后面的程序多處重用,這樣,也方便數(shù)據(jù)庫遷移時,只需連接類的程序。提示:可以考慮連接池連接數(shù)據(jù)庫dbConnect.java:packagemygame;import

java.sql.*;public

class

dbConnect

{public

static

Connectiongetconntion(){String

dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=gamedb";String

userName="sa";

//默認用戶名String

userPwd

=

"123456";

//Connectiondbconn

=

null;try{Class.forName("com.

.sqlserver.jdbc.SQLServerDriver");dbconn

=

DriverManager.getConnection(dbURL,userName,userPwd);}catch

(Exception

e){e.printStackTrace();}return

dbconn;}}新用戶把新用戶

功能設(shè)計為兩頁:信息輸入界面頁userRegister.htm信息處理頁douserRegister.jsp。檢驗數(shù)據(jù)是否符合要求,用戶ID是否已存在(不重復(fù))。失敗時,提示失敗信息,并返回

信息輸入界面頁userRegister.jsp,如果 成功,就轉(zhuǎn)到大廳。用戶信息的查看與更新用戶信息的查看與更新功能設(shè)計為一頁-----用戶信息頁userInfo.jsp查詢信息時的URL:userInfo.jsp?cmd=load,從數(shù)據(jù)庫按用戶ID檢索到用戶信息,填充到網(wǎng)頁上的控件,進行顯示。提交更新時的URL:userInfo.jsp?cmd=update,用戶在界面上

后提交給此URL,服務(wù)器端程序檢查數(shù)據(jù)的正確性,更新到數(shù)據(jù)庫表中。用戶信息的查看與更新將JSP的頁面功能與功能邏輯代碼分離,把功能邏輯代碼封裝為JAVA類,再在JSP頁內(nèi)調(diào)用類或?qū)嵗姆椒?。userInfoBean類的結(jié)構(gòu)圖:錯誤處理技術(shù)當JSP頁程序、所調(diào)用的對象方法中出現(xiàn)異常時,如果不進行捕獲與處理,系統(tǒng)的內(nèi)部錯誤信息將被直接顯示,這樣的程序是不友好的。因此,要對被調(diào)用的對象方法中出現(xiàn)異常進行捕獲,然后重新拋出具有“友好”信息的異常,供JSP頁捕獲處理。實踐:用戶及信息更新用戶

:–設(shè)計userRegister.htm→設(shè)計douserRegister.jsp→在login.jsp中添加userRegister.htm

;Gamehome.jsp重定向提交douserRegister.jspuserRegister.htm驗證錯誤實踐:用戶

及信息更新信息更新–實現(xiàn)UserInfoBean.java類→設(shè)計userInfo.jsp→在gamehome.jsp中添加userInfo.jsp

。userInfo.jsp?cmd=loadUserInfoBean.java更新查詢查看信息userInfo.jsp?cmd=updateJDBC知識與技術(shù)數(shù)據(jù)庫操作過程加載驅(qū)動程序建立連接對象執(zhí)行SQL

語句執(zhí)行參數(shù)化SQL執(zhí)行

過程結(jié)果集的使用加載驅(qū)動程序DriverManager

類是JDBC

的管理層,作用于用戶和驅(qū)動程序之間。在數(shù)據(jù)庫和相應(yīng)驅(qū)動程序之間建立連接。下面是加載Oracle數(shù)據(jù)庫JDBC驅(qū)動程序的方法:Class.forName(“oracle.jdbc.driver.OracleDriver”);oracle的Driver的全名oracle.jdbc.driver.OracleDrivermysql的Driver的全名com.mysql.jdbc.DriverSQLServer的Driver的全名com.

.jdbc.sqlserver.SQLServerDriver以上的全名,實際上是驅(qū)動類的名字,記得要把該類包含在項目可以

的位置。建立連接對象加載Driver

類后,它們即可用來與數(shù)據(jù)庫建立連接。當調(diào)用DriverManager.getConnection方法發(fā)出連接請求時,DriverManager

將檢查驅(qū)動程序,查看它是否可以建立連接。建立連接所需所有步驟的示例://加載驅(qū)動程序

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

String

url="jdbc:odbc:fred";DriverManager.getConnection(url,"userID","passwd");執(zhí)行SQL

語句Statement

對象用于將SQL

語句發(fā)送到數(shù)據(jù)庫中。實際上有三種

Statement

對象,它們都作為在給定連接上執(zhí)行SQL語句的包容器:Statement:用于執(zhí)行不帶參數(shù)的簡單SQL

語句PreparedStatement:用于執(zhí)行帶或不帶IN參數(shù)的預(yù)編譯SQL

語句CallableStatement:用于執(zhí)行對數(shù)據(jù)庫已

過程的調(diào)用創(chuàng)建Statement

對象建立了到特定數(shù)據(jù)庫的連接之后,就可用該連接發(fā)送SQL

語句。Statement

對象用Connection

的方法createStatement

創(chuàng)建。如下列代碼段中所示:Connection

conn

=

DriverManager.getConnection(url,

"sunny",

"");Statement

stmt

=

conn.createStatement();Statement

對象執(zhí)行語句executeQueryexecuteUpdateexecuteexecuteQuery用于產(chǎn)生單個結(jié)果集的語句,例如,SELECT語句:ResultSet

rs

=

stmt.executeQuery(“select

*

fromjobs”);executeUpdate用于執(zhí)行INSERT、UPDATE

或DELETE

語句以及SQL

DDL(數(shù)據(jù)定義語言)語句,例如CREATE

TABLE

和DROP

TABLE。INSERT、UPDATE

或DELETE

語句的效果是修改表中零行或多行中的一列或多列。executeUpdate

的返回值是一個整數(shù),指示受影響的行數(shù)(即更新計數(shù))。對于CREATE

TABLE

或DROP

TABLE

等不操作行的語句,executeUpdate

的返回值總為零。Int

n=stmt.executeUpdate(“update

sales

setprice=0.8*price”);execute用于執(zhí)行返回多個結(jié)果集、多個更新計數(shù)或二者組合的語句。execute方法比較少用,僅在語句能返回多個ResultSet

對象、多個更新計數(shù)或ResultSet

對象與更新計數(shù)的組合時使用。結(jié)果集的使用ResultSet

包含符合SQL

語句中條件的所有行,通過get

方法可以 結(jié)果集中當前行的列值,ResultSet.next

方法用于移動到ResultSet

中的下一行,使下一行成為當前行。java.sql.Statement

stmt

=

conn.createStatement();ResultSet

r

=stmt.executeQuery("select

*

from

Sales");while

(r.next())

{String

s

=

r.getString("productname");int

i

=

r.getInt("qty");float

f

=

r.getFloat("price");…….}注意列是從左至右

的,并且從列

1

開始。同時,用作get

方法的輸入的列名不區(qū)分大小寫。執(zhí)行參數(shù)化SQL創(chuàng)建PreparedStatement

對象:PreparedStatement

pstmt

=

con.prepareStatement("update

books

set

qty=

?

where

title

=

?");傳遞IN參數(shù)在執(zhí)行PreparedStatement

對象之前,必須設(shè)置每個?參數(shù)的值。這可通過調(diào)用set

方法來完成,其中是與該參數(shù)相應(yīng)的類型。例如:pstmt.setInt(1,

100);pstmt.setString(2,”JSP程序設(shè)計”);研究:成績查詢及用戶研究任務(wù)1:設(shè)計一個JAVA類,編寫一個方法實現(xiàn) 結(jié)束時將得分更新到數(shù)據(jù)庫表中,并記錄事件日志;編寫一個方法實現(xiàn)按用戶ID查詢成績。設(shè)計一個查看當前用戶的“

溫馨提示

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

最新文檔

評論

0/150

提交評論