




已閱讀5頁(yè),還剩21頁(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)介
第7章 JSP中使用數(shù)據(jù)庫(kù),在當(dāng)今這一網(wǎng)絡(luò)技術(shù)蓬勃發(fā)展的時(shí)代,數(shù)據(jù)庫(kù)扮演了非常重要的角色;如果在服務(wù)器端沒有數(shù)據(jù)庫(kù)系統(tǒng)的支持,像搜索引擎、電子商務(wù)等Web應(yīng)用程序就很難處理數(shù)量龐大的數(shù)據(jù),因此,Web應(yīng)用程序一般都需要訪問(wèn)數(shù)據(jù)庫(kù)?,F(xiàn)在最常用的是關(guān)系數(shù)據(jù)庫(kù),JSP可以訪問(wèn)多種不同的關(guān)系數(shù)據(jù)庫(kù),如Oracle數(shù)據(jù)庫(kù)、SQL Server數(shù)據(jù)庫(kù)、DB2數(shù)據(jù)庫(kù)、MySQL數(shù)據(jù)庫(kù)和Microsoft Access數(shù)據(jù)庫(kù)等。在JSP頁(yè)面中,對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)一般都是通過(guò)JDBC進(jìn)行的,它為數(shù)據(jù)庫(kù)應(yīng)用開發(fā)人員提供了獨(dú)立于具體數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)訪問(wèn)方法。,引言,教學(xué)目標(biāo),了解JDBC的相關(guān)概念 掌握使用JDBCODBC橋訪問(wèn)數(shù)據(jù)庫(kù) 掌握使用加載純java數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序訪問(wèn)數(shù)據(jù)庫(kù) 掌握常用SQL語(yǔ)句的使用,第7章在JSP中使用數(shù)據(jù)庫(kù),本章大部分例子采用的模式是JSP+JavaBean模式,即JSP頁(yè)面調(diào)用bean來(lái)完成對(duì)數(shù)據(jù)庫(kù)的操作,使用的數(shù)據(jù)庫(kù)管理系統(tǒng)是SQL Server 2000。,7.1JDBC,JDBC是Java數(shù)據(jù)庫(kù)連接(Java DataBase Connectivity)的簡(jiǎn)稱,由一組用Java語(yǔ)言編寫的類和接口組成,它們位于java.sql包中,提供了跨平臺(tái)的數(shù)據(jù)庫(kù)訪問(wèn)方法,并且為數(shù)據(jù)庫(kù)應(yīng)用開發(fā)人員提供了一種標(biāo)準(zhǔn)的應(yīng)用程序設(shè)計(jì)接口(API)。,通過(guò)使用JDBC,開發(fā)人員可以很方便地將SQL語(yǔ)句傳送給幾乎任何一種數(shù)據(jù)庫(kù)。也就是說(shuō),開發(fā)人員可以不必寫一個(gè)程序訪問(wèn)Sybase,寫另一個(gè)程序訪問(wèn)Oracle,再寫一個(gè)程序訪問(wèn)Microsoft的SQLServer。用JDBC寫的程序能夠自動(dòng)地將SQL語(yǔ)句傳送給相應(yīng)的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)。在JSP程序中,程序員可以使用JDBC API將SQL語(yǔ)句發(fā)送到相應(yīng)的任何一種數(shù)據(jù)庫(kù),從而實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。,7.1JDBC,7.1 JDBC,JDBC的基本功能 1.與一個(gè)數(shù)據(jù)庫(kù)建立連接。 2.向已連接的數(shù)據(jù)庫(kù)發(fā)送SQL語(yǔ)句。 3. 處理SQL語(yǔ)句返回的結(jié)果。 圖7.6,7.2數(shù)據(jù)庫(kù)連接的常用方式,1.一種常見方式是建立起一個(gè)JDBC-ODBC橋接器 2.另一種使用純Java數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,7.3 使用JDBCODBC橋訪問(wèn)數(shù)據(jù)庫(kù),創(chuàng)建ODBC數(shù)據(jù)源 建立JDBCODBC橋接器 和ODBC數(shù)據(jù)源指定的數(shù)據(jù)庫(kù)建立連接,ODBC是由微軟開發(fā)的、目前用得最廣泛的訪問(wèn)關(guān)系數(shù)據(jù)庫(kù)的API,它是用C語(yǔ)言實(shí)現(xiàn)的標(biāo)準(zhǔn)應(yīng)用程序,用來(lái)在相關(guān)或不相關(guān)的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)中存取數(shù)據(jù)的。通過(guò)ODBC API,應(yīng)用程序可以存取保存在多種不同DBMS中的數(shù)據(jù),而不論每個(gè)DBMS使用了何種數(shù)據(jù)存儲(chǔ)格式和編程接口,它提供了連接幾乎任何一種平臺(tái)、任何一種數(shù)據(jù)庫(kù)的能力。事實(shí)上,JDBC通過(guò)JDBCODBC橋接器實(shí)現(xiàn)ODBC可以實(shí)現(xiàn)的所有的對(duì)數(shù)據(jù)庫(kù)的操作能力。 圖7.7-P131,7.3 使用JDBCODBC橋訪問(wèn)數(shù)據(jù)庫(kù),7.3.1創(chuàng)建ODBC數(shù)據(jù)源,要實(shí)現(xiàn)通過(guò)ODBC訪問(wèn)數(shù)據(jù)庫(kù),就必須首先為數(shù)據(jù)庫(kù)建立一個(gè)ODBC數(shù)據(jù)源,這樣數(shù)據(jù)庫(kù)才能實(shí)現(xiàn)和應(yīng)用程序的交互。 單擊“開始” |“控制面板”菜單命令,打開“控制面板”窗口,然后在窗口中雙擊“管理工具”圖標(biāo),打開“管理工具”窗口,再雙擊“數(shù)據(jù)源(ODBC)”圖標(biāo),打開“ODBC數(shù)據(jù)源管理器”窗口,單擊“添加”按扭,打開“創(chuàng)建新數(shù)據(jù)源”窗口,然后即可創(chuàng)建數(shù)據(jù)源了。,7.3.2建立JDBCODBC橋接器,Try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); catch(ClassNotFoundException e) ,7.3.3與ODBC數(shù)據(jù)源指定的數(shù)據(jù)庫(kù)建立連接,Connection con =DriverManager.getConnection(“jdbc:odbc:數(shù)據(jù)源名字”,”login name”,”password”) 實(shí)例:showByJdbcOdbc.jsp,java.sql. DriverManager,該類負(fù)責(zé)加載、注冊(cè)JDBC驅(qū)動(dòng)程序,管理應(yīng)用程序和已注冊(cè)的驅(qū)動(dòng)程序的連接。 public static Connection getConnection(String url, String user, String password) throws SQLException 試圖建立到給定數(shù)據(jù)庫(kù) URL 的連接。DriverManager 試圖從已注冊(cè)的 JDBC 驅(qū)動(dòng)程序集中選擇一個(gè)適當(dāng)?shù)尿?qū)動(dòng)程序。 參數(shù): url - jdbc:subprotocol:subname 形式的數(shù)據(jù)庫(kù) url user - 數(shù)據(jù)庫(kù)用戶,連接是為該用戶建立的 password - 用戶的密碼 返回: 到 URL 的連接 拋出: SQLException - 如果發(fā)生數(shù)據(jù)庫(kù)訪問(wèn)錯(cuò)誤,java.sql.Connection,該接口代表數(shù)據(jù)庫(kù)連接,并擁有創(chuàng)建SQL語(yǔ)句的方法,以完成常規(guī)的SQL操作,并為數(shù)據(jù)庫(kù)事務(wù)處理提供提交和回滾方法。 Statement createStatement()返回一個(gè)Statement對(duì)象 Void close() 用于斷開連接,java.sql.Statement,它用來(lái)向數(shù)據(jù)庫(kù)提交SQL語(yǔ)句的執(zhí)行結(jié)果。 ResultSet executeQuery(String sql) 執(zhí)行給定的 SQL 語(yǔ)句,該語(yǔ)句返回單個(gè) ResultSet 對(duì)象。,java.sql.ResultSet,在使用Statement中的executeQuery方法執(zhí)行SELECT查詢指令時(shí),查詢的結(jié)果將會(huì)放在ResultSet中。,ResultSet表示數(shù)據(jù)庫(kù)結(jié)果集的數(shù)據(jù)表,通常通過(guò)執(zhí)行查詢數(shù)據(jù)庫(kù)的語(yǔ)句生成。 ResultSet 對(duì)象具有指向其當(dāng)前數(shù)據(jù)行的光標(biāo)。最初,光標(biāo)被置于第一行之前。next 方法將光標(biāo)移動(dòng)到下一行;因?yàn)樵摲椒ㄔ?ResultSet 對(duì)象沒有下一行時(shí)返回 false,所以可以在 while 循環(huán)中使用它來(lái)迭代結(jié)果集。 默認(rèn)的 ResultSet 對(duì)象不可更新,僅有一個(gè)向前移動(dòng)的光標(biāo)。因此,只能迭代它一次,并且只能按從第一行到最后一行的順序進(jìn)行。,java.sql.ResultSet,ResultSet 接口提供用于從當(dāng)前行獲取列值的獲取 方法(getBoolean、getLong 等)。可以使用列的索引編號(hào)或列的名稱獲取值。一般情況下,使用列索引較為高效。列從 1 開始編號(hào)。為了獲得最大的可移植性,應(yīng)該按從左到右的順序讀取每行中的結(jié)果集列,每列只能讀取一次。,java.sql.ResultSet,列名或列號(hào)可用于標(biāo)識(shí)要從中獲取數(shù)據(jù)的列。例如,如果 ResultSet 對(duì)象 rs 的第二列名為“姓名”,并將值存儲(chǔ)為字符串,則下列任一代碼將獲取存儲(chǔ)在該列中的值: String s = rs.getString(“姓名“); String s = rs.getString(2);,java.sql.ResultSet,7.4 使用純Java數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,準(zhǔn)備工作:下載并安裝JDBC驅(qū)動(dòng)程序 微軟推出的JDBC驅(qū)動(dòng)程序SQL Server 2000 Driver for JDBC可以實(shí)現(xiàn)直接與SQL Server數(shù)據(jù)庫(kù)的連接,用戶可以到微軟的官方網(wǎng)站/downloads下載sqljdbc_1.1.1501.101_enu.exe。安裝后將enu子目錄下的sqljdbc.jar復(fù)制到j(luò)dkjrelibext下面。 另外還需要更新SQL server服務(wù)器.,7.4.1加載SQL的驅(qū)動(dòng),try Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver“).newInstance(); catch(Exception e) out.print(e); ,7.4.2和數(shù)據(jù)庫(kù)建立連接,try String uri= “jdbc:sqlserver:/:1433;DatabaseName=Student“; String user=“sa“; String password=“sa“; con=DriverManager.getConnection(uri,user,password); catch(SQLException e) 實(shí)例:showBySQLDriver.jsp,7.5查詢操作,與數(shù)據(jù)庫(kù)建立連接后,就可以使用JDBC提供的API和數(shù)據(jù)庫(kù)交互信息,如查詢、修改和更新數(shù)據(jù)庫(kù)中的表等。 創(chuàng)建Statement對(duì)象 Statement sql=con.createStatement(); sql對(duì)象就可以調(diào)用相應(yīng)的方法,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)中表的查詢和修改,并將查詢結(jié)果存放在一個(gè)ResultSet類聲明的對(duì)象中 ResultSet rs=sql.executeQuery(“SELECT * FROM score“);,7.5.1順序查詢,如何獲取數(shù)據(jù)庫(kù)中表的結(jié)構(gòu)信息呢? ResultSetMetaData可用于獲取關(guān)于 ResultSet 對(duì)象中列的類型和屬性信息 ResultSetMetaData rsmd = rs.getMetaData(); Int getColumnCount() 返
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 外部審計(jì)與內(nèi)部審計(jì)的差異考題及答案
- 2025建筑施工分包合同書樣本
- 2025年財(cái)務(wù)管理考試靈活應(yīng)對(duì)試題及答案
- 2025年模具制造數(shù)字化設(shè)計(jì)在模具行業(yè)產(chǎn)業(yè)鏈產(chǎn)業(yè)鏈生態(tài)構(gòu)建中的應(yīng)用報(bào)告
- 2025年工程法規(guī)考試的重要信息試題及答案
- 2025年中藥炮制新技術(shù)成果鑒定與市場(chǎng)競(jìng)爭(zhēng)力報(bào)告
- 學(xué)校傳染病防控工作要點(diǎn)
- 社會(huì)學(xué)視角下的老年人社會(huì)參與研究試題及答案
- 企業(yè)財(cái)務(wù)資源的整合考題及答案
- 2025年調(diào)酒棒項(xiàng)目可行性研究報(bào)告
- TYH300型液壓支架調(diào)移裝置使用說(shuō)明書
- 實(shí)驗(yàn)室生物安全和實(shí)驗(yàn)室分級(jí)及適用 課件
- 2022年巫山縣教師進(jìn)城考試筆試題庫(kù)及答案解析
- DB3201-T 1115-2022 《森林防火道路建設(shè)基本要求》-(高清版)
- 科技項(xiàng)目立項(xiàng)申報(bào)表
- 六年級(jí)下冊(cè)美術(shù)教案-第14課 有趣的光影 丨贛美版
- 人教版小升初數(shù)學(xué)總復(fù)習(xí)知識(shí)點(diǎn)歸納
- 藥用動(dòng)物學(xué)習(xí)題
- 食管癌放射治療設(shè)計(jì)課件
- 光伏行業(yè)英文詞匯.doc
- 土地增值稅清算鑒證報(bào)告(稅務(wù)師事務(wù)所專用)
評(píng)論
0/150
提交評(píng)論