在JSP中使用數(shù)據(jù)庫(kù).ppt_第1頁(yè)
在JSP中使用數(shù)據(jù)庫(kù).ppt_第2頁(yè)
在JSP中使用數(shù)據(jù)庫(kù).ppt_第3頁(yè)
在JSP中使用數(shù)據(jù)庫(kù).ppt_第4頁(yè)
在JSP中使用數(shù)據(jù)庫(kù).ppt_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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ù)器端沒(méi)有數(shù)據(jù)庫(kù)系統(tǒng)的支持,像搜索引擎、電子商務(wù)等Web應(yīng)用程序就很難處理數(shù)量龐大的數(shù)據(jù),因此,Web應(yīng)用程序一般都需要訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)?,F(xiàn)在最常用的是關(guān)系數(shù)據(jù)庫(kù),JSP可以訪(fǎng)問(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ù)的訪(fǎng)問(wèn)一般都是通過(guò)JDBC進(jìn)行的,它為數(shù)據(jù)庫(kù)應(yīng)用開(kāi)發(fā)人員提供了獨(dú)立于具體數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)方法。,引言,教學(xué)目標(biāo),了解JDBC的相關(guān)概念 掌握使用JDBCODBC橋訪(fǎng)問(wèn)數(shù)據(jù)庫(kù) 掌握使用加載純java數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序訪(fǎ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)稱(chēng),由一組用Java語(yǔ)言編寫(xiě)的類(lèi)和接口組成,它們位于java.sql包中,提供了跨平臺(tái)的數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)方法,并且為數(shù)據(jù)庫(kù)應(yīng)用開(kāi)發(fā)人員提供了一種標(biāo)準(zhǔn)的應(yīng)用程序設(shè)計(jì)接口(API)。,通過(guò)使用JDBC,開(kāi)發(fā)人員可以很方便地將SQL語(yǔ)句傳送給幾乎任何一種數(shù)據(jù)庫(kù)。也就是說(shuō),開(kāi)發(fā)人員可以不必寫(xiě)一個(gè)程序訪(fǎng)問(wèn)Sybase,寫(xiě)另一個(gè)程序訪(fǎng)問(wèn)Oracle,再寫(xiě)一個(gè)程序訪(fǎng)問(wèn)Microsoft的SQLServer。用JDBC寫(xiě)的程序能夠自動(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ù)的訪(fǎng)問(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.一種常見(jiàn)方式是建立起一個(gè)JDBC-ODBC橋接器 2.另一種使用純Java數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,7.3 使用JDBCODBC橋訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),創(chuàng)建ODBC數(shù)據(jù)源 建立JDBCODBC橋接器 和ODBC數(shù)據(jù)源指定的數(shù)據(jù)庫(kù)建立連接,ODBC是由微軟開(kāi)發(fā)的、目前用得最廣泛的訪(fǎng)問(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橋訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),7.3.1創(chuàng)建ODBC數(shù)據(jù)源,要實(shí)現(xiàn)通過(guò)ODBC訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),就必須首先為數(shù)據(jù)庫(kù)建立一個(gè)ODBC數(shù)據(jù)源,這樣數(shù)據(jù)庫(kù)才能實(shí)現(xiàn)和應(yīng)用程序的交互。 單擊“開(kāi)始” |“控制面板”菜單命令,打開(kāi)“控制面板”窗口,然后在窗口中雙擊“管理工具”圖標(biāo),打開(kāi)“管理工具”窗口,再雙擊“數(shù)據(jù)源(ODBC)”圖標(biāo),打開(kāi)“ODBC數(shù)據(jù)源管理器”窗口,單擊“添加”按扭,打開(kāi)“創(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,該類(lèi)負(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ù)用戶(hù),連接是為該用戶(hù)建立的 password - 用戶(hù)的密碼 返回: 到 URL 的連接 拋出: SQLException - 如果發(fā)生數(shù)據(jù)庫(kù)訪(fǎng)問(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() 用于斷開(kāi)連接,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查詢(xún)指令時(shí),查詢(xún)的結(jié)果將會(huì)放在ResultSet中。,ResultSet表示數(shù)據(jù)庫(kù)結(jié)果集的數(shù)據(jù)表,通常通過(guò)執(zhí)行查詢(xún)數(shù)據(jù)庫(kù)的語(yǔ)句生成。 ResultSet 對(duì)象具有指向其當(dāng)前數(shù)據(jù)行的光標(biāo)。最初,光標(biāo)被置于第一行之前。next 方法將光標(biāo)移動(dòng)到下一行;因?yàn)樵摲椒ㄔ?ResultSet 對(duì)象沒(méi)有下一行時(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)或列的名稱(chēng)獲取值。一般情況下,使用列索引較為高效。列從 1 開(kāi)始編號(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ù)的連接,用戶(hù)可以到微軟的官方網(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查詢(xún)操作,與數(shù)據(jù)庫(kù)建立連接后,就可以使用JDBC提供的API和數(shù)據(jù)庫(kù)交互信息,如查詢(xún)、修改和更新數(shù)據(jù)庫(kù)中的表等。 創(chuàng)建Statement對(duì)象 Statement sql=con.createStatement(); sql對(duì)象就可以調(diào)用相應(yīng)的方法,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)中表的查詢(xún)和修改,并將查詢(xún)結(jié)果存放在一個(gè)ResultSet類(lèi)聲明的對(duì)象中 ResultSet rs=sql.executeQuery(“SELECT * FROM score“);,7.5.1順序查詢(xún),如何獲取數(shù)據(jù)庫(kù)中表的結(jié)構(gòu)信息呢? ResultSetMetaData可用于獲取關(guān)于 ResultSet 對(duì)象中列的類(lèi)型和屬性信息 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)益歸上傳用戶(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論