版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第12章數(shù)據(jù)庫(kù)項(xiàng)目應(yīng)用實(shí)踐12.1JDBC技術(shù)簡(jiǎn)介12.2JDBC應(yīng)用實(shí)例12.3ASP.net應(yīng)用實(shí)例
學(xué)會(huì)了數(shù)據(jù)庫(kù),一定要到項(xiàng)目中去應(yīng)用,這樣才能體現(xiàn)數(shù)據(jù)庫(kù)的價(jià)值。本章任務(wù):?在項(xiàng)目中應(yīng)用SQLServer數(shù)據(jù)庫(kù)。12.1JDBC技術(shù)簡(jiǎn)介12.1.1JDBC的概念
JDBC(JavaDataBaseConnectivity)是Java與數(shù)據(jù)庫(kù)的接口規(guī)范。JDBC定義了一個(gè)支持標(biāo)準(zhǔn)SQL功能的通用低層的應(yīng)用程序編程接口(API),它由Java語(yǔ)言編寫(xiě)的類(lèi)和接口組成,旨在讓各數(shù)據(jù)庫(kù)開(kāi)發(fā)商為Java程序員提供標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)API。JDBCAPI定義了若干Java中的類(lèi),表示數(shù)據(jù)庫(kù)聯(lián)接、SQL指令、結(jié)果集、數(shù)據(jù)庫(kù)元數(shù)據(jù)等,它允許Java程序員發(fā)送SQL指令并處理結(jié)果。通過(guò)驅(qū)動(dòng)程序管理器,JDBCAPI可利用不同的驅(qū)動(dòng)程序聯(lián)接不同的數(shù)據(jù)庫(kù)系統(tǒng)。
JDBC與ODBC都是基于X/Open的SQL調(diào)用級(jí)接口,JDBC的設(shè)計(jì)在思想上沿襲了ODBC,同時(shí)在其主要抽象和SQLCLI的實(shí)現(xiàn)上也沿襲了ODBC,這使得JDBC容易被接受。JDBC的總體結(jié)構(gòu)類(lèi)似于ODBC,也有四個(gè)組件:應(yīng)用程序、驅(qū)動(dòng)程序管理器、驅(qū)動(dòng)程序和數(shù)據(jù)源。JDBC保持了ODBC的基本特性,也獨(dú)立于特定數(shù)據(jù)庫(kù)。使用相同源代碼的應(yīng)用程序通過(guò)動(dòng)態(tài)加載不同的JDBC驅(qū)動(dòng)程序可以訪(fǎng)問(wèn)不同的DBMS。聯(lián)接不同的DBMS時(shí),各個(gè)DBMS之間僅通過(guò)不同的URL進(jìn)行標(biāo)識(shí)。JDBC的DatabaseMetaData接口提供了一系列方法,可以檢查DBMS對(duì)特定特性的支持,并相應(yīng)確定有什么特性,從而能對(duì)特定數(shù)據(jù)庫(kù)的特性予以支持。與ODBC一樣,JDBC也支持在應(yīng)用程序中同時(shí)建立多個(gè)數(shù)據(jù)庫(kù)聯(lián)接,采用JDBC可以很容易地用SQL語(yǔ)句同時(shí)訪(fǎng)問(wèn)多個(gè)異構(gòu)的數(shù)據(jù)庫(kù),為異構(gòu)的數(shù)據(jù)庫(kù)之間的互操作奠定基礎(chǔ)。JDBC除了具有ODBC的上述特點(diǎn)外,還具有對(duì)硬件平臺(tái)、操作系統(tǒng)異構(gòu)性的支持。這主要是因?yàn)镺DBC使用的是C語(yǔ)言,而JDBC使用的是Java語(yǔ)言。Java語(yǔ)言具有與平臺(tái)無(wú)關(guān)、移植性強(qiáng)、安全性高、穩(wěn)定性好、分布式、面向?qū)ο蟮缺姸鄡?yōu)點(diǎn),而JDBC確保了“100%純Java”的解決方案。利用Java的平臺(tái)無(wú)關(guān)性,JDBC應(yīng)用程序可以自然地實(shí)現(xiàn)跨平臺(tái)特性,因而更適合于Internet上異構(gòu)環(huán)境的數(shù)據(jù)庫(kù)應(yīng)用。此外,JDBC驅(qū)動(dòng)程序管理器是內(nèi)置的,驅(qū)動(dòng)程序本身也可通過(guò)Web瀏覽器自動(dòng)下載,無(wú)需安裝、配置,而ODBC驅(qū)動(dòng)程序管理器和ODBC驅(qū)動(dòng)程序必須在每臺(tái)客戶(hù)機(jī)上分別安裝、配置。12.1.2JDBC對(duì)象模型
1.?Connection對(duì)象
Connection對(duì)象用于聯(lián)接數(shù)據(jù)源,包含諸如DatabaseURL(數(shù)據(jù)源)、UserID(用戶(hù)名)和Password(密碼)等訪(fǎng)問(wèn)特定數(shù)據(jù)源所需的屬性。命令是通過(guò)聯(lián)接進(jìn)行傳輸?shù)?,而結(jié)果集以流的形式返回,該流可以通過(guò)ResultSet讀取。目前,JDBC2.0~JDBC3.0都不支持DataSet對(duì)象(不過(guò),最新的JDBC4.0支持DataSet對(duì)象)。
2.?Statement對(duì)象
Statement類(lèi)似于ADO.NET的Command對(duì)象,用于對(duì)數(shù)據(jù)源執(zhí)行命令。一個(gè)命令可以是一個(gè)存儲(chǔ)過(guò)程調(diào)用、一條更新語(yǔ)句或者一條返回結(jié)果的語(yǔ)句,也可以使用輸入和輸出參數(shù),并且返回值。例如,可以對(duì)數(shù)據(jù)庫(kù)執(zhí)行查詢(xún)、新增、修改和刪除數(shù)據(jù)等命令。3.ResultSet對(duì)象
ResultSet類(lèi)似于ADO.NET的DataReader對(duì)象,用于在只讀和只進(jìn)的聯(lián)接模式下從數(shù)據(jù)源讀取數(shù)據(jù)。ResultSet對(duì)象是用來(lái)讀取數(shù)據(jù)庫(kù)的最簡(jiǎn)單方式,它只能讀取,不能寫(xiě)入。ResultSet支持正向讀取、反向讀取,也可讀取中間某條數(shù)據(jù)。不過(guò)要注意的是,默認(rèn)情況下只能正向讀取,且數(shù)據(jù)的每個(gè)列(字段)只能讀一次(可從Statement對(duì)象設(shè)置)。12.2JDBC應(yīng)用實(shí)例12.2.1安裝
(1)安裝環(huán)境:Windows2000Server,SQLServer2000。
(2)安裝軟件:jdk1.5和Tomcat5.0以上。
(3)安裝方法:將光盤(pán)中的college_java.rar解壓到本地,并將解壓出的文件夾下的build\web文件夾復(fù)制到Tomcat安裝路徑\webapps下,并重命名為college_java即可。如果用netbeanIDE5.0,則按下面的順序操作:打開(kāi)文件→打開(kāi)項(xiàng)目→選擇解壓的文件夾→打開(kāi)項(xiàng)目文件夾→右鍵點(diǎn)擊打開(kāi)項(xiàng)目→運(yùn)行項(xiàng)目。12.2.2數(shù)據(jù)庫(kù)配置用文本編輯器打開(kāi)Tomcat安裝路徑\webapps\college_java\WEB-INF下的web.xml文件,分別修改以下位置并保存:
(1)找到下列兩行語(yǔ)句:
<param-name>DatabaseDriver</param-name><param-value>sun.jdbc.odbc.JdbcOdbcDriver</param-value>
把?“sun.jdbc.odbc.JdbcOdbcDriver”?改為SQLServer數(shù)據(jù)庫(kù)jdbc驅(qū)動(dòng)?“com.microsoft.jdbc.sqlserver.SQLServerDriver”。
(2)找到下列語(yǔ)句:
<param-name>Databaseurl</param-name><param-value>jdbc:odbc:Driver={MicroSoftAccessDriver(*.mdb)};
DBQ=c:/college.mdb</param-value>
將“jdbc:odbc:Driver={MicroSoftAccessDriver(*.mdb)};DBQ=c:/college.mdb”改為“jdbc:microsoft:sqlserver://25:1433;DatabaseName=college”(其中,25為數(shù)據(jù)庫(kù)地址url,1433為SQL用的端口號(hào),college為數(shù)據(jù)庫(kù)名稱(chēng))。
(3)找到下列語(yǔ)句:
<param-name>User</param-name><param-value>sa</param-value><param-name>Password</param-name><param-value>sa</param-value>
把兩個(gè)sa分別改為數(shù)據(jù)庫(kù)用戶(hù)名和密碼。12.2.3應(yīng)用實(shí)現(xiàn)在瀏覽器地址欄輸入:http://localhost:8084/college_java/index.jsp,顯示如圖12-1所示。
1.增加學(xué)生信息先查出可增加新學(xué)生的班級(jí),然后根據(jù)輸入學(xué)號(hào)、姓名等學(xué)生信息添加到數(shù)據(jù)庫(kù),并顯示操作的SQL語(yǔ)句。實(shí)現(xiàn)上述功能的代碼是:stu_insert_java.jsp、stu_insert_success_java.jsp,這些代碼可從出版社指定的網(wǎng)站上下載。如圖12-1所示進(jìn)行填寫(xiě),按“增加”后得到結(jié)果,如圖12-2所示。圖12-1使用jdbc的數(shù)據(jù)庫(kù)記錄添加界面圖12-2記錄添加成功stu_insert_java.jsp的內(nèi)容如下:
<%@pagecontentType="text/html;charset=gb2312"%><%@pageimport="java.sql.*"%><%@pageimport="dbsetup.dbname"%><html><head><title>增加學(xué)生</title></head><body><formname="form1"method="post"action="stu_insert_success_java.jsp"><divalign="center"><tablewidth="48%"border="1"><tr><tdwidth="51%"><divalign="center">學(xué)號(hào):</div></td><tdwidth="49%"><inputtype="text"name="stuno"></td></tr><tr><td><divalign="center">姓名:</div></td><td><inputtype="text"name="stuname"></td></tr><tr><td><divalign="center">性別:</div></td><td><selectname="stusex"><optionvalue="男">男</option><optionvalue="女">女</option></select></td></tr><tr><td><divalign="center">出生年月:</div></td><td><inputtype="text"name="stubirth"></td></tr><tr><td><divalign="center">班級(jí):</div></td><td><%Class.forName(dbname.forname).newInstance();Stringurl=dbname.url;System.out.println(url);Stringuser=dbname.user;Stringpassword=dbname.password;Connectionconn=DriverManager.getConnection(url,user,password);Stringsql="select*from班級(jí)表";Statementstmt=conn.createStatement();ResultSetrs=stmt.executeQuery(sql);%><selectname="stuclass"><%while(rs.next()){%><optionvalue="<%=rs.getString("班級(jí)編號(hào)")%>"><%=rs.getString("班級(jí)名稱(chēng)")%></option><%}rs.close();stmt.close();conn.close();%></select></td></tr><tr><td><divalign="center">電話(huà):</div></td><td><inputtype="text"name="stutele"></td></tr><tr><td><divalign="center">地址:</div></td><td><inputtype="text"name="stuaddress"></td></tr><tr><td><divalign="center">身份證:</div></td><td><inputtype="text"name="stuid"></td></tr><tr><tdcolspan="2"><divalign="center"><inputtype="submit"name="Submit"value="提交"><inputtype="reset"name="reset"value="重置"></div></td></tr></table></div></form></body></html>stu_insert_success_java.jsp的內(nèi)容如下:
<%@pagecontentType="text/html;charset=gb2312"%><%@pageimport="java.sql.*"%><%@pageimport="dbsetup.dbname"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>增加學(xué)生</title></head><body><%Class.forName(dbname.forname).newInstance();//讀取并初始化jdbc驅(qū)動(dòng)程序
Stringurl=dbname.url;//數(shù)據(jù)庫(kù)路徑
Stringuser=dbname.user;//用戶(hù)名
Stringpassword=dbname.password;//密碼
Connectionconn=DriverManager.getConnection(url,user,password);//獲取數(shù)據(jù)庫(kù)聯(lián)接
Stringsql="insertinto學(xué)生表(學(xué)號(hào),姓名,性別,出生年月,班級(jí)編號(hào),電話(huà),地址,身份證)values('"+dbname.trans(request.getParameter("stuno"))+"','"+dbname.trans(request.getParameter("stuname"))+"','"+dbname.trans(request.getParameter("stusex"))+"','"+dbname.trans(request.getParameter("stubirth"))+"','"+dbname.trans(request.getParameter("stuclass"))+"','"+dbname.trans(request.getParameter("stutele"))+"','"+dbname.trans(request.getParameter("stuaddress"))+"','"+dbname.trans(request.getParameter("stuid"))+"')";//定義SQL語(yǔ)句Statementstmt=conn.createStatement();//初始化新的執(zhí)行命令對(duì)象stmt.executeUpdate(sql);//執(zhí)行SQL語(yǔ)句stmt.close();//關(guān)閉執(zhí)行命令對(duì)象conn.close();//關(guān)閉數(shù)據(jù)庫(kù)聯(lián)接out.println("增加學(xué)生成功!");%><br><%out.println("操作語(yǔ)句:"+sql);//顯示執(zhí)行的數(shù)據(jù)庫(kù)SQL語(yǔ)句%></body></html>2.查詢(xún)學(xué)生信息根據(jù)輸入的學(xué)號(hào)、姓名、出生日期(起始)、出生日期(結(jié)束)這幾個(gè)條件查詢(xún)符合條件的學(xué)生。實(shí)現(xiàn)代碼在文件index.jsp和stu_select_success_java.jsp中。按照?qǐng)D12-3進(jìn)行操作,查詢(xún)結(jié)果如圖12-4所示。
3.修改學(xué)生信息根據(jù)查詢(xún)出的學(xué)生信息(學(xué)號(hào)),查出該學(xué)生的學(xué)生信息并顯示,然后根據(jù)修改的學(xué)生信息對(duì)該學(xué)生的信息進(jìn)行更新,并顯示操作的SQL語(yǔ)句。實(shí)現(xiàn)代碼在文件stu_update_java.jsp和stu_update_success_java.jsp中。按照?qǐng)D12-5進(jìn)行操作,修改記錄成功后的界面如圖12-6所示。圖12-3查詢(xún)出生日期符合條件記錄的顯示界面圖12-4查詢(xún)生日范圍內(nèi)姓李的學(xué)生記錄的顯示界面圖12-5修改學(xué)生記錄的界面圖12-6修改學(xué)生記錄成功的界面4.刪除學(xué)生信息根據(jù)查詢(xún)出的學(xué)生信息(學(xué)號(hào)),刪除該學(xué)生的信息,并顯示操作的SQL語(yǔ)句。實(shí)現(xiàn)代碼在文件stu_delete_success_java.jsp中。按照?qǐng)D12-7進(jìn)行操作,刪除記錄成功后的界面如圖12-8所示。圖12-7刪除學(xué)生記錄的界面圖12-8刪除學(xué)生記錄成功的界面12.3ASP.net應(yīng)用實(shí)例12.3.1安裝安裝環(huán)境如下:
(1)操作系統(tǒng):Windows2000Server或WindowsXP。
(2)選擇的工具:VisualStudio2005。
(3)數(shù)據(jù)庫(kù):SQLServer2000。12.3.2初始化先創(chuàng)建數(shù)據(jù)庫(kù)。在查詢(xún)分析器中打開(kāi)相關(guān)的文件,如圖12-9所示。在查詢(xún)分析器中選中剛剛打開(kāi)的文件,運(yùn)行所有代碼就可以創(chuàng)建數(shù)據(jù)庫(kù)和表。圖12-9“打開(kāi)查詢(xún)文件”界面(2)運(yùn)行VisualStudio2005,如圖12-10所示。點(diǎn)擊菜單欄中的“文件”選項(xiàng),選擇“打開(kāi)”項(xiàng)里的網(wǎng)站,如圖12-11所示。打開(kāi)指定的文件(WebApplication1),如圖12-12所示。圖12-10VisualStudio2005的界面圖12-11在VisualStudio2005中選擇“打開(kāi)”項(xiàng)里的網(wǎng)站界面圖12-12打開(kāi)文件WebApplication1的界面12.3.3應(yīng)用實(shí)現(xiàn)的關(guān)鍵代碼
(1)在圖12-12中,數(shù)據(jù)庫(kù)聯(lián)接的代碼如下:
mycon.ConnectionString="userid=sa;password=sa;"http://數(shù)據(jù)的用戶(hù)名是sa,密碼也是sa&"initialcatalog=college;//college為數(shù)據(jù)庫(kù)名
Server=WWW-77B34AFC674;"http://服務(wù)器的選擇。如服務(wù)器為xjsb430,則寫(xiě)為Server=xjsb430mycon.Open()//調(diào)用數(shù)據(jù)庫(kù);
(2)下面分析其中的一段調(diào)用數(shù)據(jù)的代碼。
Dimconnstr,selectcmdAsStringconnstr="userid=sa;password=sa;"&"initialcatalog=college;Server=WWW-77B34AFC674;"selectcmd="selectdistinct班級(jí)編號(hào)from班級(jí)表"http://本行代碼說(shuō)明選擇了數(shù)據(jù)庫(kù)后,再選擇調(diào)用數(shù)據(jù)庫(kù)中的表(3)下面的代碼可實(shí)現(xiàn)添加功能(在insert.aspx.vb頁(yè)面中)。
mycmd.CommandText="insertinto學(xué)生表(學(xué)號(hào),姓名,性別,出生年月,
班級(jí)編
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物料提升機(jī)安裝、使用、拆卸方案
- 互聯(lián)網(wǎng)借款協(xié)議樣式
- 舊房拆除補(bǔ)償政策咨詢(xún)
- 渣土外運(yùn)合同書(shū)模板
- 環(huán)??招拇u采購(gòu)合同
- 用心溝通保證書(shū)
- 采購(gòu)合同的技術(shù)參數(shù)要求
- 人員外包服務(wù)合同指南詳解
- 買(mǎi)賣(mài)房屋合同修編要點(diǎn)
- 債務(wù)擔(dān)保合同協(xié)議范本
- 感染性休克指南解讀
- 老年大學(xué)教學(xué)工作計(jì)劃
- 2025屆河北省石家莊市普通高中學(xué)校畢業(yè)年級(jí)教學(xué)質(zhì)量摸底檢測(cè)英語(yǔ)試卷
- 國(guó)家開(kāi)放大學(xué)22379丨網(wǎng)絡(luò)技術(shù)基礎(chǔ)(統(tǒng)設(shè)課)期末終考題庫(kù)
- 統(tǒng)編版(2024新版)七年級(jí)上冊(cè)道德與法治第四單元綜合測(cè)試卷(含答案)
- 十四五養(yǎng)老規(guī)劃政策解讀
- 北京市海淀區(qū)2023-2024學(xué)年四年級(jí)上學(xué)期語(yǔ)文期末試卷
- 【MOOC】電工電子學(xué)-浙江大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 人教版八年級(jí)上冊(cè)數(shù)學(xué)期末考試試題有答案
- 陜西省咸陽(yáng)市2023-2024學(xué)年高一上學(xué)期期末考試 物理 含解析
- 低空經(jīng)濟(jì)產(chǎn)業(yè)的市場(chǎng)化運(yùn)營(yíng)路徑
評(píng)論
0/150
提交評(píng)論