![第9章 基于JSP的Web數(shù)據(jù)庫應(yīng)用開發(fā)_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/25/d6814c4d-7664-429c-b2a4-c3ff9e81e58d/d6814c4d-7664-429c-b2a4-c3ff9e81e58d1.gif)
![第9章 基于JSP的Web數(shù)據(jù)庫應(yīng)用開發(fā)_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/25/d6814c4d-7664-429c-b2a4-c3ff9e81e58d/d6814c4d-7664-429c-b2a4-c3ff9e81e58d2.gif)
![第9章 基于JSP的Web數(shù)據(jù)庫應(yīng)用開發(fā)_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/25/d6814c4d-7664-429c-b2a4-c3ff9e81e58d/d6814c4d-7664-429c-b2a4-c3ff9e81e58d3.gif)
![第9章 基于JSP的Web數(shù)據(jù)庫應(yīng)用開發(fā)_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/25/d6814c4d-7664-429c-b2a4-c3ff9e81e58d/d6814c4d-7664-429c-b2a4-c3ff9e81e58d4.gif)
![第9章 基于JSP的Web數(shù)據(jù)庫應(yīng)用開發(fā)_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-5/25/d6814c4d-7664-429c-b2a4-c3ff9e81e58d/d6814c4d-7664-429c-b2a4-c3ff9e81e58d5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1 第三篇第三篇 jsp webjsp web數(shù)據(jù)庫應(yīng)用開發(fā)數(shù)據(jù)庫應(yīng)用開發(fā) 2 jsp 9.1 web9.1 web數(shù)據(jù)庫應(yīng)用基礎(chǔ)數(shù)據(jù)庫應(yīng)用基礎(chǔ) 9.1.1 9.1.1 數(shù)據(jù)庫基本概念數(shù)據(jù)庫基本概念 1.1.基本術(shù)語基本術(shù)語 (1 1)數(shù)據(jù)庫系統(tǒng))數(shù)據(jù)庫系統(tǒng) 數(shù)據(jù)庫系統(tǒng)是一個存儲數(shù)據(jù)的計(jì)算機(jī)系統(tǒng)。數(shù)據(jù)庫系統(tǒng)是一個存儲數(shù)據(jù)的計(jì)算機(jī)系統(tǒng)。 (2 2)數(shù)據(jù)庫)數(shù)據(jù)庫 數(shù)據(jù)庫是一個按數(shù)據(jù)結(jié)構(gòu)來存儲和管理數(shù)據(jù)的計(jì)算數(shù)據(jù)庫是一個按數(shù)據(jù)結(jié)構(gòu)來存儲和管理數(shù)據(jù)的計(jì)算 機(jī)軟件系統(tǒng)。數(shù)據(jù)庫概念包含兩層意思:機(jī)軟件系統(tǒng)。數(shù)據(jù)庫概念包含兩層意思: 數(shù)據(jù)庫保管數(shù)據(jù)的數(shù)據(jù)庫保管數(shù)據(jù)的“倉庫倉庫”?!皵?shù)據(jù)數(shù)據(jù)”和和“庫庫”兩
2、兩 個概念結(jié)合成為個概念結(jié)合成為“數(shù)據(jù)庫數(shù)據(jù)庫”。 數(shù)據(jù)庫是數(shù)據(jù)管理的方法和技術(shù),它能夠合理地組數(shù)據(jù)庫是數(shù)據(jù)管理的方法和技術(shù),它能夠合理地組 織數(shù)據(jù)、方便地維護(hù)數(shù)據(jù)、嚴(yán)密地控制數(shù)據(jù)和有效織數(shù)據(jù)、方便地維護(hù)數(shù)據(jù)、嚴(yán)密地控制數(shù)據(jù)和有效 地利用數(shù)據(jù)。地利用數(shù)據(jù)。 數(shù)據(jù)庫是一個合理組織了的數(shù)據(jù)倉庫數(shù)據(jù)庫是一個合理組織了的數(shù)據(jù)倉庫。 3 jsp (3)數(shù)據(jù)庫管理系統(tǒng)()數(shù)據(jù)庫管理系統(tǒng)(dbms) 數(shù)據(jù)庫管理系統(tǒng)是管理數(shù)據(jù)庫的軟件系統(tǒng),它提供數(shù)據(jù)庫管理系統(tǒng)是管理數(shù)據(jù)庫的軟件系統(tǒng),它提供 了一組建立數(shù)據(jù)庫和管理數(shù)據(jù)庫的工具。用戶可以使用了一組建立數(shù)據(jù)庫和管理數(shù)據(jù)庫的工具。用戶可以使用 這些工具進(jìn)行各種數(shù)據(jù)庫
3、操作,如數(shù)據(jù)庫生成、數(shù)據(jù)表這些工具進(jìn)行各種數(shù)據(jù)庫操作,如數(shù)據(jù)庫生成、數(shù)據(jù)表 格生成、數(shù)據(jù)的輸入和修改、數(shù)據(jù)的檢索和使用、數(shù)據(jù)格生成、數(shù)據(jù)的輸入和修改、數(shù)據(jù)的檢索和使用、數(shù)據(jù) 安全、數(shù)據(jù)相關(guān)關(guān)系的設(shè)定和數(shù)據(jù)訪問權(quán)限的設(shè)定等。安全、數(shù)據(jù)相關(guān)關(guān)系的設(shè)定和數(shù)據(jù)訪問權(quán)限的設(shè)定等。 目前市場上比較著名的數(shù)據(jù)庫管理系統(tǒng)有目前市場上比較著名的數(shù)據(jù)庫管理系統(tǒng)有oracle、 sybase、informix、sql server等。等。 2. 數(shù)據(jù)庫設(shè)計(jì)與管理信息系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)與管理信息系統(tǒng) 管理信息系統(tǒng)簡稱為管理信息系統(tǒng)簡稱為mis(management information system),管理信息系統(tǒng)幫助
4、人們完成需要手工處理的,管理信息系統(tǒng)幫助人們完成需要手工處理的 信息處理工作,不僅能夠提高工作效率,降低勞動強(qiáng)度,信息處理工作,不僅能夠提高工作效率,降低勞動強(qiáng)度, 而且能夠提升管理信息的質(zhì)量和水平。管理信息系統(tǒng)的而且能夠提升管理信息的質(zhì)量和水平。管理信息系統(tǒng)的 數(shù)據(jù)存放在數(shù)據(jù)庫中數(shù)據(jù)存放在數(shù)據(jù)庫中 。 4 數(shù)據(jù)庫 用 戶 息 信 管 理 系統(tǒng) 功 能 模 塊 數(shù) 據(jù) 庫 管 理 系 統(tǒng)用 戶 用 戶 管理信息系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)和數(shù)據(jù)庫的關(guān)系管理信息系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)和數(shù)據(jù)庫的關(guān)系 5 3. 數(shù)據(jù)庫、表、記錄和字段數(shù)據(jù)庫、表、記錄和字段 數(shù)據(jù)庫:數(shù)據(jù)庫:數(shù)據(jù)庫中的數(shù)據(jù)表示為多個表的集合,通
5、過數(shù)據(jù)庫中的數(shù)據(jù)表示為多個表的集合,通過 建立表與表之間的關(guān)系來定義數(shù)據(jù)庫的結(jié)構(gòu)。建立表與表之間的關(guān)系來定義數(shù)據(jù)庫的結(jié)構(gòu)。 表:表: 按某一公共結(jié)構(gòu)存儲的一組相似數(shù)據(jù),它是數(shù)按某一公共結(jié)構(gòu)存儲的一組相似數(shù)據(jù),它是數(shù) 據(jù)庫的基礎(chǔ)構(gòu)件。據(jù)庫的基礎(chǔ)構(gòu)件。 記錄:記錄:表中數(shù)據(jù)以行、列方式將相關(guān)信息排列成邏表中數(shù)據(jù)以行、列方式將相關(guān)信息排列成邏 輯組,表中每一行稱為一個記錄輯組,表中每一行稱為一個記錄 字段:字段:表中每一列稱為字段表中每一列稱為字段 例如,網(wǎng)上書店數(shù)據(jù)庫名為例如,網(wǎng)上書店數(shù)據(jù)庫名為bookshop,庫中有,庫中有7個表:個表: book、userinfo、orderform、orde
6、rdetail、notes、 employee和和publisher。 6 jsp 9.1.2創(chuàng)建數(shù)據(jù)庫和表創(chuàng)建數(shù)據(jù)庫和表 1. 創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫 (1)啟動)啟動sql server服務(wù)管理器服務(wù)管理器 (2)創(chuàng)建數(shù)據(jù)庫)創(chuàng)建數(shù)據(jù)庫 2. 創(chuàng)建新表:創(chuàng)建新表:booktable 7 jsp 9.1.3 sql語句語句 1. 選擇語句(選擇語句(select statement) 從現(xiàn)有的數(shù)據(jù)庫中檢索數(shù)據(jù),將滿足一定約束條件的一個或多從現(xiàn)有的數(shù)據(jù)庫中檢索數(shù)據(jù),將滿足一定約束條件的一個或多 個表中的字段從數(shù)據(jù)庫中挑選出來,并按一定的分組和排序方法個表中的字段從數(shù)據(jù)庫中挑選出來,并按一定的分組
7、和排序方法 顯示。簡單的選擇語句只有顯示。簡單的選擇語句只有from子句,用來指定數(shù)據(jù)的來源,子句,用來指定數(shù)據(jù)的來源, 也就是記錄來自那些表。也就是記錄來自那些表。 where子句指定選擇記錄時(shí)要滿足的子句指定選擇記錄時(shí)要滿足的 條件,如果沒有條件,如果沒有where子句,則返回表中的所有記錄。子句,則返回表中的所有記錄。 select 字段字段1,字段,字段2,from 表名表名where 條件表達(dá)式條件表達(dá)式 (1)在)在booktable表中檢索所有書名表中檢索所有書名 select bookname from booktable 功能:從功能:從booktable表的表的bookna
8、me字段檢索數(shù)據(jù)。字段檢索數(shù)據(jù)。 select:關(guān)鍵字,說明要做查詢操作;:關(guān)鍵字,說明要做查詢操作; bookname:字段名,數(shù)據(jù)從該字段中檢索;:字段名,數(shù)據(jù)從該字段中檢索; from:關(guān)鍵字,指明信息來源,后面列出表的名稱。:關(guān)鍵字,指明信息來源,后面列出表的名稱。 booktable :表的名稱,數(shù)據(jù)從該表中檢索。表的名稱,數(shù)據(jù)從該表中檢索。 結(jié)果集是結(jié)果集是booktable表中的全部書名。表中的全部書名。 8 jsp (2) 在在booktable表中查詢書號等于表中查詢書號等于isbn 7-04-012301-0的書名,的書名, select bookname from boo
9、ktable where bookid=isbn isbn 7-04-012301-0 結(jié)果集是:結(jié)果集是:c+程序設(shè)計(jì)。程序設(shè)計(jì)。 (3) 范圍查詢,在范圍查詢,在booktable表中查詢表中查詢2002年上半年出版的書名,年上半年出版的書名, select bookname from booktable where pubdate between2002-1-1and 2002-6-30 (4) order by子句,使結(jié)果集按序排列。圖書按出版日期排序子句,使結(jié)果集按序排列。圖書按出版日期排序: select* from booktable order by bookid 缺省值是升序
10、,缺省值是升序, 按降序排列,按降序排列, 加關(guān)鍵字加關(guān)鍵字desc : select* from booktable order by bookid desc (5)模糊查詢,在模糊查詢,在where子句中應(yīng)用子句中應(yīng)用like運(yùn)算符,可以只選擇運(yùn)算符,可以只選擇 與用戶規(guī)定格式相同的記錄。用通配符與用戶規(guī)定格式相同的記錄。用通配符“%”可以代替任何字符可以代替任何字符 串。例如,在串。例如,在userinfo表中查詢所有姓王的讀者,可用以下語句:表中查詢所有姓王的讀者,可用以下語句: select * from userinfo where username like 王王% 9 jsp
11、2.插入語句(插入語句(insert statement) 一個或多個記錄添加到指定表中。一個或多個記錄添加到指定表中。 insert into 表名表名(字段字段1,字段字段2,n) values(值值1, 值值2,n) 例如,在例如,在booktable表中插入新書記錄表中插入新書記錄(書號書號:isbn 7-04- 012301-0,書名:,書名:c+程序設(shè)計(jì),作者:吳乃陵,出版社程序設(shè)計(jì),作者:吳乃陵,出版社 編號:編號:3,出版日期:,出版日期:2003-8-1,定價(jià):,定價(jià):29.5) : insert into booktable (bookid, bookname, autho
12、r, publisher, pubdate, price,type, quantity) values(isbn 7-04-012301-0, c+程序設(shè)計(jì)程序設(shè)計(jì),吳乃吳乃 陵陵,高等教育出版社高等教育出版社,2003-8-1,29.5,計(jì)算機(jī)計(jì)算機(jī), 100) 10 jsp 3. 更新語句(更新語句(update statements) 更新表中的字段。更新表中的字段。 update 表名表名 set 列名列名=表達(dá)式表達(dá)式,列名列名=表達(dá)表達(dá) 式,式,where條件表達(dá)式條件表達(dá)式 例如,在例如,在booktable表中把所有圖書的在庫冊數(shù)減表中把所有圖書的在庫冊數(shù)減2, 語句如下:語句
13、如下: update booktable set quantity = quantity-2 11 jsp 4. 刪除語句(刪除語句(delete statement) 刪除由刪除由from子句列出的、滿足子句列出的、滿足where子句條件的子句條件的 一個或多個表中的記錄。一個或多個表中的記錄。 delete from 表名表名 where條件表達(dá)式條件表達(dá)式 例如,在例如,在booktable表中刪除剛才插入的書號為表中刪除剛才插入的書號為isbn 7-04-012301-0的記錄,語句如下:的記錄,語句如下: delete from booktable where bookid= isb
14、n 7- 04-012301-0 又如:下條又如:下條sql語句的功能將刪除表中所有的記錄,語句的功能將刪除表中所有的記錄, 使用時(shí)要特別當(dāng)心:使用時(shí)要特別當(dāng)心: delete from booktable 12 jsp 9.2 jdbc9.2 jdbc接口技術(shù)接口技術(shù) 9.2.1 jdbc 概述概述 1. 什么是什么是jdbc jdbc(java database connectivity)接口技術(shù)實(shí)際上是一種接口技術(shù)實(shí)際上是一種 通過通過java語言訪問任何結(jié)構(gòu)化數(shù)據(jù)庫的應(yīng)用程序接口語言訪問任何結(jié)構(gòu)化數(shù)據(jù)庫的應(yīng)用程序接口(api)。 許多數(shù)據(jù)庫系統(tǒng)帶有許多數(shù)據(jù)庫系統(tǒng)帶有jdbc驅(qū)動程序,驅(qū)
15、動程序,java程序通過程序通過jdbc驅(qū)驅(qū) 動程序與數(shù)據(jù)庫連接,執(zhí)行查詢、插入、更改和刪除等操作。動程序與數(shù)據(jù)庫連接,執(zhí)行查詢、插入、更改和刪除等操作。 為能夠訪問帶有為能夠訪問帶有odbc驅(qū)動程序的數(shù)據(jù)庫,驅(qū)動程序的數(shù)據(jù)庫,sun公司開發(fā)了公司開發(fā)了 jdbc odbc bridge,應(yīng)用這項(xiàng)技術(shù),應(yīng)用這項(xiàng)技術(shù),java程序就能夠訪程序就能夠訪 問帶有問帶有odbc驅(qū)動程序的數(shù)據(jù)庫。由于大多數(shù)數(shù)據(jù)庫系統(tǒng)都帶驅(qū)動程序的數(shù)據(jù)庫。由于大多數(shù)數(shù)據(jù)庫系統(tǒng)都帶 有有odbc驅(qū)動程序,所以使用驅(qū)動程序,所以使用jdbc odbc bridge技術(shù)技術(shù)java 程序可以訪問大多數(shù)數(shù)據(jù)庫,如:程序可以訪問大
16、多數(shù)數(shù)據(jù)庫,如:ms sql server、oracle、 sybase、informix和和ms access等數(shù)據(jù)庫。等數(shù)據(jù)庫。 2. jdbc 的功能的功能 (1) 與一個數(shù)據(jù)庫建立連接與一個數(shù)據(jù)庫建立連接(connection); (2) 向數(shù)據(jù)庫發(fā)送向數(shù)據(jù)庫發(fā)送sql語句語句(statement); (3) 處理數(shù)據(jù)庫返回的結(jié)果處理數(shù)據(jù)庫返回的結(jié)果(resultset)。 13 jsp 3.jdbc訪問數(shù)據(jù)庫的四種方式訪問數(shù)據(jù)庫的四種方式 (1)jdbc-odbc bridge驅(qū)動程序驅(qū)動程序 jdbc-odbc橋利用橋利用odbc驅(qū)動程序提供驅(qū)動程序提供jdbc訪問。利用微軟訪問。
17、利用微軟 odbc的開放性,只要本地機(jī)裝有的開放性,只要本地機(jī)裝有odbc驅(qū)動,采用驅(qū)動,采用jdbc- odbc橋驅(qū)動幾乎可以訪問所有的數(shù)據(jù)庫。橋驅(qū)動幾乎可以訪問所有的數(shù)據(jù)庫。 (2)本地)本地api驅(qū)動驅(qū)動 本地本地api驅(qū)動直接把驅(qū)動直接把jdbc調(diào)用轉(zhuǎn)變成數(shù)據(jù)庫標(biāo)準(zhǔn)調(diào)用,然后再去調(diào)用轉(zhuǎn)變成數(shù)據(jù)庫標(biāo)準(zhǔn)調(diào)用,然后再去 訪問數(shù)據(jù)庫。這種方法也需要本地?cái)?shù)據(jù)庫驅(qū)動程序。訪問數(shù)據(jù)庫。這種方法也需要本地?cái)?shù)據(jù)庫驅(qū)動程序。 (3)網(wǎng)絡(luò)協(xié)議驅(qū)動)網(wǎng)絡(luò)協(xié)議驅(qū)動 使用一段純使用一段純java代碼,把代碼,把jdbc調(diào)用轉(zhuǎn)換成目標(biāo)數(shù)據(jù)庫網(wǎng)絡(luò)協(xié)議調(diào)用轉(zhuǎn)換成目標(biāo)數(shù)據(jù)庫網(wǎng)絡(luò)協(xié)議 調(diào)用。調(diào)用。 (4)本地協(xié)議驅(qū)動)本地
18、協(xié)議驅(qū)動 使用一段純使用一段純java代碼,把代碼,把jdbc調(diào)用轉(zhuǎn)換成數(shù)據(jù)庫本地協(xié)議調(diào)用。調(diào)用轉(zhuǎn)換成數(shù)據(jù)庫本地協(xié)議調(diào)用。 14 jsp 9.2.2 jdbc-odbc橋橋 先建立數(shù)據(jù)源,數(shù)據(jù)源對應(yīng)一個數(shù)據(jù)庫。為了連接到數(shù)據(jù)先建立數(shù)據(jù)源,數(shù)據(jù)源對應(yīng)一個數(shù)據(jù)庫。為了連接到數(shù)據(jù) 庫,需要建立一個庫,需要建立一個jdbc-odbc橋接器,也就是加載橋接器,也就是加載jdbc- odbc橋驅(qū)動程序。以網(wǎng)上書店的橋驅(qū)動程序。以網(wǎng)上書店的bookshop數(shù)據(jù)庫為例數(shù)據(jù)庫為例 。 建立數(shù)據(jù)源建立數(shù)據(jù)源(dsn:data source name) 一個數(shù)據(jù)源就是對數(shù)據(jù)庫的一個命名連接。一個數(shù)據(jù)源就是對數(shù)據(jù)庫的
19、一個命名連接。數(shù)據(jù)源有三種:數(shù)據(jù)源有三種: 用戶數(shù)據(jù)源、系統(tǒng)數(shù)據(jù)源和文件數(shù)據(jù)源。用戶數(shù)據(jù)源只有用戶用戶數(shù)據(jù)源、系統(tǒng)數(shù)據(jù)源和文件數(shù)據(jù)源。用戶數(shù)據(jù)源只有用戶 可以看見,只能用于當(dāng)前機(jī)器中。系統(tǒng)數(shù)據(jù)源允許所有用戶登可以看見,只能用于當(dāng)前機(jī)器中。系統(tǒng)數(shù)據(jù)源允許所有用戶登 錄特定服務(wù)器去訪問數(shù)據(jù)庫,任何具有權(quán)限的用戶都可以訪問錄特定服務(wù)器去訪問數(shù)據(jù)庫,任何具有權(quán)限的用戶都可以訪問 系統(tǒng)數(shù)據(jù)源。文件數(shù)據(jù)源把信息存儲在后綴為系統(tǒng)數(shù)據(jù)源。文件數(shù)據(jù)源把信息存儲在后綴為.dsn的文本文件中,的文本文件中, 如果把該文件放在網(wǎng)絡(luò)共享目錄中,則可被網(wǎng)絡(luò)中任何一臺工如果把該文件放在網(wǎng)絡(luò)共享目錄中,則可被網(wǎng)絡(luò)中任何一臺工
20、 作站訪問到。作站訪問到。web應(yīng)用程序訪問數(shù)據(jù)庫時(shí),應(yīng)用程序訪問數(shù)據(jù)庫時(shí),通常是建立系統(tǒng)數(shù)通常是建立系統(tǒng)數(shù) 據(jù)源據(jù)源。 15 jsp 9.2.3 jdbc建立數(shù)據(jù)庫連接示例建立數(shù)據(jù)庫連接示例 用用jdbc-odbc bridge驅(qū)動程序建立與數(shù)據(jù)庫的連接。驅(qū)動程序建立與數(shù)據(jù)庫的連接。 例例9.1(p232) :使用:使用jsp技術(shù)查詢技術(shù)查詢booktable表中書號表中書號 是是isbn 7-04-012301-0的圖書。本例使用前面生成的的圖書。本例使用前面生成的 bookshoplk數(shù)據(jù)源,通過數(shù)據(jù)源,通過jdbc-odbc橋訪問數(shù)據(jù)庫。橋訪問數(shù)據(jù)庫。 jdbc-odbc bridge
21、 16 /所有與數(shù)據(jù)庫有關(guān)的對象和方法都所有與數(shù)據(jù)庫有關(guān)的對象和方法都 在在java.sql包中包中 jdbc建立數(shù)據(jù)庫連接建立數(shù)據(jù)庫連接 數(shù)數(shù) 據(jù)據(jù) 查查 詢詢 /加載驅(qū)動程序加載驅(qū)動程序 17 bookidbooknameauthor publisherpubdateprice typequantity /將名稱為將名稱為bookid的的 列的內(nèi)容作為字符型返回列的內(nèi)容作為字符型返回 / 只返回年月日只返回年月日 18 jsp 19 jsp 9.2.4 jdbc建立數(shù)據(jù)庫連接方法詳解建立數(shù)據(jù)庫連接方法詳解 1. jdbc建立數(shù)據(jù)庫連接步驟建立數(shù)據(jù)庫連接步驟 (1) 加入命令行:加入命令行:
22、 (2) 加載驅(qū)動程序:加載驅(qū)動程序: class.forname(sun.jdbc.odbc.jdbcodbcdriver); (3) 建立連接:建立連接: connection conn=drivermanager.getconnection(jdbc:odbc:bookshoplk,sa, ); (4) 發(fā)送發(fā)送sql語句:語句: statement stmt = conn.createstatement(); (5)建立)建立resultset(結(jié)果集結(jié)果集)對象:對象: resultset rs; (6)執(zhí)行)執(zhí)行sql語句:語句: rs=stmt.executequery(sele
23、ct * from booktable where bookid=isbn 7-04-012301-0); / executequery:用于產(chǎn):用于產(chǎn) 生單個結(jié)果集的語句生單個結(jié)果集的語句 (7)關(guān)閉對象:)關(guān)閉對象: rs.close(); /關(guān)閉關(guān)閉resultset對象對象 stmt.close(); /關(guān)閉關(guān)閉statement對象對象 conn.close(); /關(guān)閉關(guān)閉connection對象對象 20 jsp 2. jdbc數(shù)據(jù)庫連接步驟詳解數(shù)據(jù)庫連接步驟詳解 (1) 加入命令行(加入命令行(p234) 所有與數(shù)據(jù)庫有關(guān)的對象和方法都在所有與數(shù)據(jù)庫有關(guān)的對象和方法都在java
24、.sql包中,所以在使用包中,所以在使用 jdbc的程序中必須加入命令行:的程序中必須加入命令行: (2)加載驅(qū)動程序(加載驅(qū)動程序(p234) 應(yīng)用應(yīng)用jdbc-odbc bridge方式連接數(shù)據(jù)庫,必須先加載方式連接數(shù)據(jù)庫,必須先加載jdbc- odbc bridge驅(qū)動程序,語句如下:驅(qū)動程序,語句如下: class.forname(sun.jdbc.odbc.jdbcodbcdriver); class是包是包java.lang中的一個類,中的一個類,該類通過調(diào)用該類通過調(diào)用靜態(tài)方法靜態(tài)方法forname 建立建立jdbc-odbc橋接器,即加載驅(qū)動程序。橋接器,即加載驅(qū)動程序。 由于
25、加載驅(qū)動程序時(shí)可能產(chǎn)生異常,所以需要異常處理程序段。由于加載驅(qū)動程序時(shí)可能產(chǎn)生異常,所以需要異常處理程序段。 try catch(exception e ) 21 jsp (3)建立連接()建立連接(p235) 要連接一個數(shù)據(jù)庫,必須創(chuàng)建要連接一個數(shù)據(jù)庫,必須創(chuàng)建connection類的一個實(shí)例類的一個實(shí)例 : connection conn = drivermanager.getconnection(jdbc:odbc:數(shù)據(jù)數(shù)據(jù) 源名源名,loginname,password); 調(diào)用調(diào)用drivermanager.getconnection方法建立與數(shù)據(jù)庫的連接,該方法建立與數(shù)據(jù)庫的連接,
26、該 方法指定了數(shù)據(jù)庫的位置、用戶名和用戶口令。方法指定了數(shù)據(jù)庫的位置、用戶名和用戶口令。drivermanager 類位于類位于jdbc的管理層,作用在用戶和驅(qū)動程序之間。的管理層,作用在用戶和驅(qū)動程序之間。 數(shù)據(jù)源名數(shù)據(jù)源名 是在是在“控制面板控制面板管理工具管理工具數(shù)據(jù)源(數(shù)據(jù)源(odbc)”中設(shè)置的數(shù)據(jù)中設(shè)置的數(shù)據(jù) 源名。源名。loginname是用戶名,是用戶名,password是用戶口令。如果沒是用戶口令。如果沒 有為數(shù)據(jù)源設(shè)置用戶名和用戶口令,連接形式如下:有為數(shù)據(jù)源設(shè)置用戶名和用戶口令,連接形式如下: connection conn = drivermanager.getconn
27、ection(jdbc:odbc:數(shù)據(jù)數(shù)據(jù) 源名源名,); 一旦一旦drivermanager.getconnection方法找到了建立連接的驅(qū)動程方法找到了建立連接的驅(qū)動程 序和數(shù)據(jù)源,則通過用戶名和口令開始與序和數(shù)據(jù)源,則通過用戶名和口令開始與dbms建立連接,如果建立連接,如果 連接通過,連接建立完成。連接通過,連接建立完成。 22 jsp (4) 發(fā)送發(fā)送sql語句(語句(p235) statement類的對象由類的對象由connection 的的createstatement 方法創(chuàng)建,用于發(fā)送不帶參數(shù)的簡單方法創(chuàng)建,用于發(fā)送不帶參數(shù)的簡單sql語句,對語句,對 數(shù)據(jù)庫進(jìn)行具體操作,
28、如查詢、修改等。數(shù)據(jù)庫進(jìn)行具體操作,如查詢、修改等。在執(zhí)行一在執(zhí)行一 個個sol查詢語句前,必須用查詢語句前,必須用createstatement方法建立方法建立 一個一個statement類的對象類的對象。例如:。例如: connection conn =drivermanager.getconnection(jdbc:odbc:booksho plk,sa,); statement stmt = conn.createstatement(); 23 jsp (5)創(chuàng)建結(jié)果集對象(創(chuàng)建結(jié)果集對象(p236) 一旦連接到數(shù)據(jù)庫,就可以查詢數(shù)據(jù)表名、列名和有關(guān)一旦連接到數(shù)據(jù)庫,就可以查詢數(shù)據(jù)表名
29、、列名和有關(guān) 的信息,并且可以運(yùn)行的信息,并且可以運(yùn)行sql語句對數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行查語句對數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行查 詢、添加、更新和刪除等操作。詢、添加、更新和刪除等操作。jdbc提供了提供了resultset、 databasemetadata和和resultsetmetadata類獲取數(shù)據(jù)庫中類獲取數(shù)據(jù)庫中 的信息。的信息。 resultset類存放查詢結(jié)果類存放查詢結(jié)果,并通過一套方法提供對數(shù)據(jù),并通過一套方法提供對數(shù)據(jù) 的訪問。它是的訪問。它是jdbc中很重要的對象。中很重要的對象。resultset包含任包含任 意數(shù)量的命名列,可以按名字訪問這些列;它也包含一意數(shù)量的命名列,可以按名字訪問
30、這些列;它也包含一 或多個行,可以按順序自上而下地逐一訪問。例如:或多個行,可以按順序自上而下地逐一訪問。例如: statement stmt = con.createstatement(); resultset rs; rs=stmt.executequery(select * from booktable where bookid=isbn 7-04-012301-0); 24 jsp 當(dāng)建立一個當(dāng)建立一個resultset類對象時(shí),它指向第一行之前的位類對象時(shí),它指向第一行之前的位 置。置。resultset 對象常用方法如下:對象常用方法如下: getint(int):將序號為:將序號
31、為int的列的內(nèi)容作為整數(shù)返回;的列的內(nèi)容作為整數(shù)返回; getint(string):將名稱為:將名稱為string的列的內(nèi)容作為整數(shù)返的列的內(nèi)容作為整數(shù)返 回;回; getfloat(int):將序號為:將序號為int的列的內(nèi)容作為一個的列的內(nèi)容作為一個float型型 數(shù)返回;數(shù)返回; getfloat (string):將名稱為:將名稱為string的列的內(nèi)容作為的列的內(nèi)容作為float 型數(shù)返回;型數(shù)返回; getdata(int):將序號為:將序號為int的列的內(nèi)容作為日期返回;的列的內(nèi)容作為日期返回; getdata(string):將名稱為:將名稱為string的列的內(nèi)容作為日期
32、的列的內(nèi)容作為日期 返回;返回; next():把行指針移到下一行,如果沒有剩余行,則返:把行指針移到下一行,如果沒有剩余行,則返 回回false; close():關(guān)閉結(jié)果集;:關(guān)閉結(jié)果集; getmetadata():返回返回resultsetmetadata對象。對象。 25 jsp resultsetmetadata類實(shí)例提供類實(shí)例提供resultset中列的名稱、中列的名稱、 數(shù)目和類型信息。例如:數(shù)目和類型信息。例如: resultsetmetadata rsmd; rsmd=results.getmetadata(); numcols= rsmd.getcolumncount()
33、; resultsetmetadata對象常用方法如下:對象常用方法如下: getcolumncount():返回返回resultset中的列數(shù);中的列數(shù); getcolumnname(int):返回序號為返回序號為int的列名;的列名; getcolumnlabel(int):返回序號為:返回序號為int列暗含的標(biāo)簽;列暗含的標(biāo)簽; iscurrency(int):如果此列包含有貨幣單位的一個數(shù):如果此列包含有貨幣單位的一個數(shù) 字,則返回字,則返回true; isreadonly(int):如果此列是只讀,則返回:如果此列是只讀,則返回true; isautoincrement(int):如
34、果此列自動遞增,則返回:如果此列自動遞增,則返回 true。 26 例例9.2(p237): 輸出輸出booktable 表中各列的名稱。代碼創(chuàng)建了表中各列的名稱。代碼創(chuàng)建了 resultsetmetadata對象對象rsmd ,并使用,并使用getcolumncount()和和 getcolumnname()方法取得方法取得booktable表中的列數(shù)和列名。表中的列數(shù)和列名。 輸出輸出 booktable 表各列的名稱表各列的名稱 輸出輸出 booktable 表各列的表各列的 名稱名稱 輸出booktable 表列名 27 jsp 記錄集中共有記錄集中共有 列列 ,各列的名稱是:,各列的
35、名稱是: / getcolumncount():返回:返回resultset中的列數(shù)中的列數(shù) % for(int i = 1; i 28 (6) 執(zhí)行執(zhí)行sql語句語句 statement對象提供了對象提供了3種執(zhí)行種執(zhí)行sql語句的方法:語句的方法: executequery:用于產(chǎn)生單個結(jié)果集的語句,例如用于產(chǎn)生單個結(jié)果集的語句,例如 select語句。語句。 rs = stmt.executequery(select * from booktable); executeupdate:用來執(zhí)行用來執(zhí)行insert、delete以及以及sqlddl (數(shù)據(jù)定義語句)。(數(shù)據(jù)定義語句)。 ex
36、ecute:用來返回多個結(jié)果集、多個更新計(jì)數(shù)或兩用來返回多個結(jié)果集、多個更新計(jì)數(shù)或兩 者組合的語句。者組合的語句。 29 jsp 9.3 9.3 查詢記錄查詢記錄 11.3.1 順序查詢順序查詢 應(yīng)用結(jié)果集應(yīng)用結(jié)果集result的的next()方法順序輸出一個表里的包方法順序輸出一個表里的包 含全部字段的所有記錄。含全部字段的所有記錄。 例例9.3(p238) :順序輸出數(shù)據(jù)表:順序輸出數(shù)據(jù)表“ booktable”中的中的 所有記錄和所有字段。所有記錄和所有字段。 分析:使用代碼分析:使用代碼 “ select * from booktable” 從從booktable數(shù)據(jù)表選擇數(shù)據(jù)表選擇
37、所有的記錄,放置在所有的記錄,放置在rs結(jié)果集中,然后使用結(jié)果集中,然后使用rs.next() 方法將結(jié)果集中的數(shù)據(jù)順序顯示出來。方法將結(jié)果集中的數(shù)據(jù)順序顯示出來。 順序查詢 30 順序查詢順序查詢 順序輸出數(shù)據(jù)表順序輸出數(shù)據(jù)表 “ booktable”中包含所有字段的所有記錄中包含所有字段的所有記錄 bookidbooknameauthorpublisher pubdatepricetypequantity 31 32 jsp 9.3.2 參數(shù)查詢參數(shù)查詢 數(shù)據(jù)篩選是指按條件從數(shù)據(jù)庫中選出符合條件的所有數(shù)據(jù)篩選是指按條件從數(shù)據(jù)庫中選出符合條件的所有 記錄,由記錄,由where子句指定選擇記錄
38、時(shí)要滿足的條件。子句指定選擇記錄時(shí)要滿足的條件。 例例 9.4(p240):用戶在界面輸入查詢條件,如出版社用戶在界面輸入查詢條件,如出版社 的名稱,輸入的名稱提交給的名稱,輸入的名稱提交給ex9-04.jsp處理,輸出數(shù)據(jù)處理,輸出數(shù)據(jù) 表表“ booktable”中需要查詢的出版社出版的圖書。其中需要查詢的出版社出版的圖書。其 關(guān)鍵查詢語句為:關(guān)鍵查詢語句為: select * from booktable where publisher=+publishername+ 參數(shù)查詢 33 jsp ex9-04.html代碼清單代碼清單如下:如下: 參數(shù)查詢應(yīng)用案例參數(shù)查詢應(yīng)用案例 圖圖 書書 查查 詢詢 請輸入出版社名稱:請輸入出版社名稱: 34 ex9-04.jsp代碼清單代碼清單如下:如下: 選
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度混凝土攪拌機(jī)租賃與環(huán)保監(jiān)測服務(wù)合同
- 2025年度知識產(chǎn)權(quán)評估與價(jià)值分析合同模板
- 2025年度教育機(jī)構(gòu)兼職教師培訓(xùn)合同
- 2025年度智慧城市建設(shè)土地抵押借款合同
- 2025年度股權(quán)并購重組咨詢服務(wù)合同
- 2025年度租車行業(yè)綠色出行推廣合作合同
- 2025年度進(jìn)出口合同履行中的海關(guān)申報(bào)與通關(guān)流程
- 2025年度綠色能源光伏發(fā)電項(xiàng)目投資合同
- 2025年度攪拌站砂石料智能化生產(chǎn)與加工合同范本
- 回收拆解退役新能源設(shè)備項(xiàng)目可行性研究報(bào)告-2025年超長期特別國債支持重點(diǎn)領(lǐng)域
- GB/T 19675.2-2005管法蘭用金屬沖齒板柔性石墨復(fù)合墊片技術(shù)條件
- 社會工作綜合能力上(初級)課件
- 運(yùn)動技能學(xué)習(xí)與控制課件第十三章動作技能的保持和遷移
- 2023年春節(jié)后建筑施工復(fù)工復(fù)產(chǎn)專項(xiàng)方案
- 污水處理廠化驗(yàn)管理手冊
- 電梯設(shè)備維護(hù)保養(yǎng)合同模板范本
- 叉車操作規(guī)程
- 土建工程技術(shù)標(biāo)范本(DOC167頁)
- 注塑參數(shù)DOE分析范例
- 綜合布線類項(xiàng)目施工圖解(共21頁)
- 圓錐曲線方程復(fù)習(xí)
評論
0/150
提交評論