ASP 動態(tài)網(wǎng)頁設(shè)計(jì)課件 第9章 ASP與數(shù)據(jù)庫操作_第1頁
ASP 動態(tài)網(wǎng)頁設(shè)計(jì)課件 第9章 ASP與數(shù)據(jù)庫操作_第2頁
ASP 動態(tài)網(wǎng)頁設(shè)計(jì)課件 第9章 ASP與數(shù)據(jù)庫操作_第3頁
ASP 動態(tài)網(wǎng)頁設(shè)計(jì)課件 第9章 ASP與數(shù)據(jù)庫操作_第4頁
ASP 動態(tài)網(wǎng)頁設(shè)計(jì)課件 第9章 ASP與數(shù)據(jù)庫操作_第5頁
已閱讀5頁,還剩68頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

ASP動態(tài)網(wǎng)頁設(shè)計(jì)第9章ASP與數(shù)據(jù)庫操作9.1ADO概述

9.2創(chuàng)建ODBCDSN文件

9.3Connection對象

9.4Command對象

9.5RecordSet對象9.6數(shù)據(jù)庫查詢和排序9.7記錄的插入、更新和刪除操作3.記憶力強(qiáng)計(jì)算機(jī)的存儲器類似于人的大腦,可以“記憶”(存儲)大量的數(shù)據(jù)和信息,在計(jì)算的同時(shí),還可以把中間結(jié)果存儲起來,供以后使用。第9章ASP與數(shù)據(jù)庫操作學(xué)習(xí)目標(biāo)1.明確什么是ADO,了解ADO的對象和操作流程。2.掌握配置數(shù)據(jù)庫DSN的方法。3.掌握Connection對象的屬性和方法,以便管理數(shù)據(jù)庫的連接。4.掌握Command對象的屬性和方法,以便完成數(shù)據(jù)庫操作。5.掌握Recordset對象的屬性和方法,以便管理數(shù)據(jù)庫記錄集。6.運(yùn)用SQL語句實(shí)現(xiàn)數(shù)據(jù)庫的查詢和排序。7.掌握運(yùn)用SQL語句和記錄集的方式,完成記錄的插入、更新和刪除操作。9.1ADO概述

ADO(ActiveXDataObject)是ASP內(nèi)置的一個(gè)用于數(shù)據(jù)庫訪問的組件,是ASP的核心技術(shù)之一。Web數(shù)據(jù)庫則是Web技術(shù)和數(shù)據(jù)庫技術(shù)相結(jié)合的產(chǎn)物,網(wǎng)上辦公、電子商務(wù)、在線注冊與搜索等都需要利用Web數(shù)據(jù)庫來存儲和管理數(shù)據(jù)。ASP與ADO相結(jié)合,完整地解決了網(wǎng)頁與數(shù)據(jù)庫的連接與集成問題,實(shí)現(xiàn)了客戶端瀏覽器對Web數(shù)據(jù)庫靈活而有效的訪問,從而提供了對各種Web應(yīng)用的強(qiáng)大支持。9.1ADO概述9.1.1ADO的對象9.1.2ADO的操作流程9.1.1ADO的對象ADO提供的七個(gè)對象與四個(gè)數(shù)據(jù)集合分述如下:1.Connection對象負(fù)責(zé)與指定的數(shù)據(jù)來源進(jìn)行連接,Connection對象除了與數(shù)據(jù)來源進(jìn)行連接之外,它還可以通過事務(wù)(Transaction)來確保在事務(wù)中所有數(shù)據(jù)來源變更的全部成功。2.Command對象負(fù)責(zé)對數(shù)據(jù)庫提供請求,也就是傳遞指定的SQL命令。換言之,Command對象必須經(jīng)由一個(gè)已經(jīng)建立的聯(lián)機(jī)(Connection對象)發(fā)出數(shù)據(jù)處理語言(DML,DataManipulationLanguage)來操作數(shù)據(jù)來源的數(shù)據(jù),這些命令通常包括INSERT(新增記錄)、DELETE(刪除記錄)、UPDATE(更新記錄)、或是SELECT(以RecordSet的形式選取數(shù)據(jù))等。除此之外,您也可以通過Command對象對數(shù)據(jù)庫發(fā)出數(shù)據(jù)定義語言(DDL,DataDefinitionLanguage),例如CREATETABLE(建立數(shù)據(jù)表)、DROPTABLE(刪除數(shù)據(jù)表)或ALTERTABLE(修改數(shù)據(jù)表結(jié)構(gòu))等。3.Parameter對象負(fù)責(zé)傳遞Command對象所需要的SQL命令參數(shù)。4.RecordSet對象負(fù)責(zé)瀏覽與操作從數(shù)據(jù)庫取出的數(shù)據(jù)。換言之,RecordSet對象就像是一個(gè)二維的數(shù)組,數(shù)組的每一行代表一個(gè)數(shù)據(jù)行,而每一個(gè)數(shù)據(jù)行包含一個(gè)或多個(gè)數(shù)據(jù)域位,這里的一個(gè)數(shù)據(jù)字段就是代表一個(gè)Field對象。5.Field對象代表指定的RecordSet對象的數(shù)據(jù)字段。6.Property對象代表ADO的各項(xiàng)對象屬性值。換言之,每一個(gè)ADO對象都會有一組描述或控制對象行的屬性。7.Error對象負(fù)責(zé)記錄聯(lián)機(jī)過程所發(fā)生的錯(cuò)誤信息。8.Errors數(shù)據(jù)集合Connection對象包含Errors數(shù)據(jù)集合,在Errors數(shù)據(jù)集合中包含數(shù)據(jù)來源響應(yīng)萬一失敗所建立的Error對象。9.Parameters數(shù)據(jù)集合Command對象包含Parameters數(shù)據(jù)集合,在Parameters數(shù)據(jù)集合中包括Command對象所有的Parameter對象。10.Fields數(shù)據(jù)集合RecordSet對象包含F(xiàn)ields數(shù)據(jù)集合,在Fields數(shù)據(jù)集合中包含RecordSet對象的所有Field數(shù)據(jù)字段對象。11.Properties數(shù)據(jù)集合Connection對象、Command對象、RecordSet對象與Field對象均包含一個(gè)Properties數(shù)據(jù)集合,在Properties數(shù)據(jù)集合中包含所對應(yīng)Connection對象、Command對象、RecordSet對象與Field對象的Property對象。9.1.2ADO的操作流程利用ASP與ADO訪問Web數(shù)據(jù)庫的過程如圖9.2創(chuàng)建ODBCDSN文件在開始使用ADO之前,首先要?jiǎng)?chuàng)建一個(gè)與ADO能交互連接的數(shù)據(jù)庫。這通常要通過在Web服務(wù)器上創(chuàng)建數(shù)據(jù)源名DSN來實(shí)現(xiàn)。而數(shù)據(jù)源的創(chuàng)建又與ODBC有著密切關(guān)系,那么我們先來看看到底什么是ODBC。9.2創(chuàng)建ODBCDSN文件9.2.1ODBC簡介9.2.2配置數(shù)據(jù)庫文件的DSN9.2.1ODBC簡介

Microsoft公司的OpenDataBase

Connectivity(ODBC)API是最早商品化的WindowsOpenService(開放服務(wù))API(WOSA)產(chǎn)品之一。WOSA是一套Windows應(yīng)用程序的編程界面,其目的是簡化Windows環(huán)境下很多過程的設(shè)計(jì)并使其標(biāo)準(zhǔn)化。ODBCAPI由WindowsDLL構(gòu)成,WindowsDLL包括一系列的函數(shù)可以對所有適合ODBC驅(qū)動程序的數(shù)據(jù)庫類型提供兩種版本的數(shù)據(jù)庫服務(wù):①安裝、設(shè)置和清除ODBC數(shù)據(jù)源。②ODBC驅(qū)動管理程序?yàn)閿?shù)據(jù)源打開ODBC驅(qū)動程序并將SQL語句傳送給驅(qū)動程序。9.2.2配置數(shù)據(jù)庫文件的DSN任務(wù)引入】實(shí)現(xiàn)與數(shù)據(jù)庫的鏈接是完成ADO對數(shù)據(jù)庫操作的首要任務(wù),配置數(shù)據(jù)源名(DataSourceName,DSN)是任務(wù)的前提?!救蝿?wù)目標(biāo)】通過“控制面板”中的ODBC驅(qū)動程序?qū)σ呀?jīng)存在的數(shù)據(jù)庫進(jìn)行配置DSN操作?!救蝿?wù)內(nèi)容】運(yùn)用Access創(chuàng)建一個(gè)名為MyList.mdb的數(shù)據(jù)庫,并創(chuàng)建一張數(shù)據(jù)表取名為MyTable,

再在表中錄入若干條記錄,最后配置該數(shù)據(jù)庫的DSN。【任務(wù)分析】該任務(wù)可以分成兩個(gè)大的步驟:①創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表,并錄入記錄。②為該數(shù)據(jù)庫文件創(chuàng)建系統(tǒng)DSN?!境绦虼a】①創(chuàng)建數(shù)據(jù)庫文件MyList.mdb,并創(chuàng)建數(shù)據(jù)表MyTable,然后在其中錄入6條記錄。MyList.mdb數(shù)據(jù)庫由以下字段構(gòu)成:編號、姓名、婚否、工資、生日、電話、住址。各字段名稱及類型見圖所示。②在數(shù)據(jù)表中錄入如圖所示的7條記錄。③在控制面版中,雙擊“ODBC數(shù)據(jù)源”圖標(biāo);在彈出的“ODBC數(shù)據(jù)源管理器”對話框(見圖)中選擇“系統(tǒng)DSN”標(biāo)簽。④在“系統(tǒng)DSN”標(biāo)簽頁中單擊“添加”按鈕;在彈出的“創(chuàng)建新數(shù)據(jù)源”對話框(見圖9.8)中選中“MicrosoftAccessDriver(*.mdb)”選項(xiàng),單擊“完成”按鈕。⑤在彈出的“ODBCMicrosoftAccess安裝”對話框(見圖9.9)中填寫各欄所需的數(shù)據(jù)?!皵?shù)據(jù)源名”一欄為必填項(xiàng)(如此處填person),所填數(shù)據(jù)將成為ADO所連接的數(shù)據(jù)源名,ADO就是通過該名對數(shù)據(jù)庫進(jìn)行操作?!懊枋觥睓诳梢圆惶睢T凇皵?shù)據(jù)庫”一欄中,單擊“選取”按鈕,打開“選定數(shù)據(jù)庫”窗口(圖9.10),選取進(jìn)行操作的實(shí)際數(shù)據(jù)庫。該數(shù)據(jù)庫既可以位于本地機(jī),也可以位于網(wǎng)絡(luò)的共享目錄中。選定數(shù)據(jù)庫后再返回“ODBCMicrosoftAccess安裝”對話框,“數(shù)據(jù)庫”欄中會有所選定數(shù)據(jù)庫的詳細(xì)地址。連續(xù)按確定,依次關(guān)閉各對話框,返回控制面板?!窘Y(jié)果示范】經(jīng)過上述操作,就配置好了一個(gè)名為person的數(shù)據(jù)源(在圖9.11的窗口出現(xiàn)),該數(shù)據(jù)源連接一個(gè)Access2003數(shù)據(jù)庫MyList.mdb。后面的章節(jié)中我們常要用到。9.3Connection對象

ADO組件中的Connection對象負(fù)責(zé)與實(shí)際數(shù)據(jù)庫的連接動作,其他所有對象都必須依賴此對象實(shí)現(xiàn)連接后才能發(fā)揮各自的功能。由于Connection對象和Command對象以及Recordset對象都是屬于ADO組件的對象,因而它們都需要首先用Server對象的

CreatObject方法創(chuàng)建一個(gè)對應(yīng)的實(shí)例后才能使用。9.3Connection對象9.3.1Connection對象運(yùn)用實(shí)例9.3.2Connection對象的屬性9.3.3Connection對象的方法9.3.4打開和關(guān)閉數(shù)據(jù)庫連接9.3.1Connection對象運(yùn)用實(shí)例【任務(wù)引入】創(chuàng)建并配置好某個(gè)數(shù)據(jù)庫的系統(tǒng)DSN之后,自然應(yīng)該對該數(shù)據(jù)庫進(jìn)行相應(yīng)操作,通過此任務(wù)我們來看看是怎樣通過Connection對象來訪問數(shù)據(jù)庫的?!救蝿?wù)目標(biāo)】理解Connection對象常用屬性和方法的使用?!救蝿?wù)內(nèi)容】利用上面已建好的Access2003數(shù)據(jù)庫MyList.mdb和配置好的數(shù)據(jù)源名person,建立與數(shù)據(jù)庫的連接,并向數(shù)據(jù)庫中追加一條記錄?!救蝿?wù)分析】該任務(wù)可以分成兩個(gè)大的步驟:①打開并連接數(shù)據(jù)庫。②向數(shù)據(jù)庫中追加一條記錄?!境绦虼a】<%@LANGUAGE="VBSCRIPT"CODEPAGE="936"%><html><head><title>插入記錄</title></head><body><%ConstRecordsAffected=0'定義符號常量

ConstadCmdText=1SetMyConn=Server.CreateObject("ADODB.Connection")

MyConn.ConnectionString="DSN=person;UID=;PWD=;"

MyConn.Open'打開與數(shù)據(jù)庫的連接CommandText="INSERTINTOMyTable(編號,姓名,婚否,工資,生日,電話,"&_"住址)Values(8,'劉小小',yes,562,1978-4-25,54818751,'芙蓉路158號')"

MyConn.Execute

CommandText,RecordsAffected,adCmdText

MyConn.Close'關(guān)閉與數(shù)據(jù)庫的連接

SetMyConn=Nothing'釋放Connection對象

Response.Write"已向數(shù)據(jù)庫中追加了一條記錄!"%></body></html>【結(jié)果示范】

【任務(wù)小結(jié)】從上述任務(wù)我們可以看出,要對數(shù)據(jù)庫進(jìn)行操作,運(yùn)用Connection對象建立并打開數(shù)據(jù)庫連接是首要環(huán)節(jié),下面我們就來具體了解Connection對象的方法和屬性?!救蝿?wù)引入】創(chuàng)建并配置好某個(gè)數(shù)據(jù)庫的系統(tǒng)DSN時(shí),可能會出現(xiàn)只允許某個(gè)特定用戶根據(jù)密碼才能訪問數(shù)據(jù)庫,那么在建立并打開數(shù)據(jù)庫連接時(shí)就需要加入用戶ID和用戶密碼信息,否則不能打開數(shù)據(jù)庫。Connection對象的ConnectionString屬性是如何來加載這些數(shù)據(jù)信息的呢?【任務(wù)目標(biāo)】掌握ConnectionString屬性的使用?!救蝿?wù)內(nèi)容】根據(jù)前面9.2.2小節(jié)中已建好的Access2003數(shù)據(jù)庫MyList.mdb和配置好的數(shù)據(jù)源名person,并設(shè)置了用戶ID為“test”,登錄密碼為“123456”。下面運(yùn)用Connection對象的ConnectionString屬性來打開該數(shù)據(jù)庫文件。9.3.2Connection對象的屬性1.ConnectionString屬性【任務(wù)分析】該任務(wù)的注意事項(xiàng):①運(yùn)用ConnectionString屬性連接數(shù)據(jù)源名person,以便打開并連接數(shù)據(jù)庫。②加載用戶ID和登錄密碼?!境绦虼a】SetMyConn=Server.CreateObject("ADODB.Connection")

MyConn.ConnectionString="DSN=person;UID=test;PWD=123456;"

MyConn.Open'打開與數(shù)據(jù)庫的連接【任務(wù)小結(jié)】ConnectionString

:包含用于連接數(shù)據(jù)庫的信息字符串,該參數(shù)由分號分隔的一系列“參數(shù)=值”語句組成。UID:表示登錄數(shù)據(jù)庫時(shí)所指定的用戶賬號。PWD:表示登錄數(shù)據(jù)庫時(shí)所指定的用戶密碼。ConnectionTimeout屬性用來設(shè)置Connection對象的Open方法試圖與數(shù)據(jù)庫連接的最長等待時(shí)間,系統(tǒng)默認(rèn)值為15秒。如果將此值設(shè)置為0,系統(tǒng)則會一直等待直到連接成功為止。此屬性的設(shè)置必須在連接之前或取消連接之后。格式為:Connection.ConnectionTimeout=seconds2.ConnectionTimeout屬性該屬性用來設(shè)置執(zhí)行Connection對象的Execute方法時(shí)的最長等待時(shí)間,默認(rèn)值為30秒。如果此值設(shè)置為0,系統(tǒng)則會一直等待直到執(zhí)行結(jié)束為止。此屬性的設(shè)置必須在Execute方法執(zhí)行之前。格式為:Connection.CommandTimeout=seconds3.CommandTimeout屬性

該屬性用來取得或設(shè)置Connection對象提供者的名稱,即數(shù)據(jù)庫管理程序的名稱。ADO默認(rèn)的Provider屬性值為:MicrosoftOLEDBProviderForODBC,它負(fù)責(zé)管理所有以O(shè)LEDB方式連接的數(shù)據(jù)庫。4.Provider屬性5.其他屬性屬性說明Mode設(shè)置連接的權(quán)限,例如只讀或只寫Attributes設(shè)置或返回Connection對象的特性CursorLocation設(shè)置或返回游標(biāo)處理的位置DefaultDatabase設(shè)置或返回Connection對象默認(rèn)的數(shù)據(jù)庫IsolationLevel設(shè)置Connection對象的事務(wù)隔離級別,只寫State返回Connection對象的當(dāng)前狀態(tài),只讀Version返回當(dāng)前ADO的版本信息,只讀1.Open方法Connection對象使用Open方法打開與數(shù)據(jù)庫的連接,只有在使用本方法之后,才能打開記錄集,對數(shù)據(jù)表做相應(yīng)操作。格式為:Connection.Open

ConnectionString

,UID,PWD2.Execute方法

當(dāng)使用Connection對象打開與數(shù)據(jù)庫的連接后,就可以直接使用Execute方法執(zhí)行有關(guān)的SQL語句或數(shù)據(jù)庫的存儲過程來對數(shù)據(jù)庫進(jìn)行操作。9.3.3Connection對象的方法3.Close方法Connection對象的Close方法負(fù)責(zé)關(guān)閉一個(gè)已經(jīng)啟動的連接對象及其相關(guān)的對象,語句格式為:

Connection.Close關(guān)閉一個(gè)連接對象并非將其從內(nèi)存中刪除,在以后可以再重新打開。若要將被關(guān)閉的連接對象徹底從內(nèi)存中刪除,應(yīng)使用Set命令將該對象變量設(shè)置為Nothing。【任務(wù)引入】在前面的小節(jié)中,我們通過創(chuàng)建系統(tǒng)DSN文件與指定數(shù)據(jù)庫之間建立連接,并對數(shù)據(jù)庫進(jìn)行相關(guān)操作。在此我們考慮,若沒有配置DSN,又應(yīng)該如何建立并打開數(shù)據(jù)庫呢?【任務(wù)目標(biāo)】掌握通過腳本程序,直接建立數(shù)據(jù)庫連接的方法?!救蝿?wù)內(nèi)容】運(yùn)用VBScript服務(wù)器端腳本程序,直接建立與指定數(shù)據(jù)庫“MyList.mdb”的連接?!救蝿?wù)分析】該任務(wù)的注意事項(xiàng):①提供一個(gè)數(shù)據(jù)庫文件,并知道它的數(shù)據(jù)庫類型和名稱。②在程序中需要指明打開該數(shù)據(jù)庫文件所需的驅(qū)動程序以及數(shù)據(jù)庫的位置。9.3.4打開和關(guān)閉數(shù)據(jù)庫連接【程序代碼】SetObjconn=Server.CreateObject("ADODB.Connection")

str="driver={MicrosoftAccessDriver(*.mdb)};dbq="&_server.mappath("MyList.mdb")

Objconn.Open

str【任務(wù)小結(jié)】由于數(shù)據(jù)庫“MyList.mdb”是用Access2003創(chuàng)建的,所以打開該數(shù)據(jù)庫就應(yīng)該選用微軟公司默認(rèn)的驅(qū)動程序“MicrosoftAccessDriver(*.mdb)”,而通過Server對象的MapPath方法來獲取該數(shù)據(jù)庫的物理路徑。上述任務(wù)中,我們采用的是直接ODBC連接方式,其實(shí)還有一種數(shù)據(jù)庫連接方式,被稱為OLEDB方式,其效率比ODBC方式更高。具體代碼如下:SetObjconn=Server.CreateObject("ADODB.Connection")

str="provider=Microsoft.jet.oledb.4.0;datasource="&_server.mappath("MyList.mdb")

Objconn.Open

str9.4Command對象從英語字面的意思就可以看出,Command是用來做命令執(zhí)行和參數(shù)傳遞的。而Command對象的批量參數(shù)傳遞,StoredProcude執(zhí)行等靈活而強(qiáng)大的功能也是它受到青睞的原因。Command對象主要是向SQL語句、StoredProcude傳遞參數(shù),依靠SQLServer的強(qiáng)大功能來完成數(shù)據(jù)庫的操作;而RecordSet對象可以說是微軟重新封裝了數(shù)據(jù)對象,并提供了一系列的方法和屬性來簡化數(shù)據(jù)庫的編程。因?yàn)镃ommand對象就是將SQL產(chǎn)生的記錄集作為整體來處理,所以性能較為優(yōu)越,其可重應(yīng)用性也非常的好。下面具體介紹Command對象的屬性、方法和集合。1.CreateParameter方法用來產(chǎn)生一個(gè)Parameter對象,常用的寫法為Setparam=comm.CreateParameter(name,

type,direction,size,value),其中name為參數(shù)的引用名,在后面引用參數(shù)的值時(shí)會用到;type為指定參數(shù)的類型,例如整數(shù)為adInteger;direction指定參數(shù)是輸入還是輸出,相應(yīng)的值為adParamInput和adParamOutput;size指定參數(shù)的最大長度或最大的值;value指定參數(shù)的值??梢詫⒏鱾€(gè)選項(xiàng)分開來寫,下面的兩種寫法是等價(jià)的:Setparam=comm.CreateParameter(name,type,direction,size,value)

和setparam=comm.CreateParameter(name,type,direction,size)param.value=value下面的方法靈活性更大。請注意,在使用了CreateParameter方法后只是建立了新的parameter對象,還需使用Parameter對象的append方法將該參數(shù)傳遞給Command對象。2.Execute方法在指定了CommandText,并將參數(shù)傳遞出去后,用Execute方法來完成執(zhí)行。與Connection對象的Execute方法類似,都是負(fù)責(zé)執(zhí)行給定的SQL語句或存儲過程。3.ActiveConnection屬性用來指定與Connection對象的連接,這里的一個(gè)技巧就是不同的Command對象指向同一個(gè)Connection連接。4.CommandText屬性CommandText值可以是一條SQL命令句,可以是一個(gè)表名,也可以是一個(gè)StoredProcedure名。5.CommandType屬性CommandType值由CommandText相應(yīng)值的給出,分別為adCmdText,adCmdTable,adCmdStoredProc。與前面在講Connection對象的Execute方法中相應(yīng)的選項(xiàng)含義相同。6.CommandTimeOut屬性設(shè)定命令執(zhí)行超時(shí)的值。7.Parameters集合就是參數(shù)對象的集合,它主要有Item方法、Append方法,和Count屬性,用法與Property對象及Error對象的相應(yīng)屬性和方法類似。9.5RecordSet對象

RecordSet對象是ADO中一個(gè)極為重要且普遍使用的對象,負(fù)責(zé)從數(shù)據(jù)庫中取得所需的記錄數(shù)據(jù)并創(chuàng)建一個(gè)記錄集合。用戶在訪問數(shù)據(jù)庫時(shí),一般先通過Connection對象建立與指定數(shù)據(jù)庫的連接,再按所需的要求通過相應(yīng)的SQL命令從數(shù)據(jù)庫中提取數(shù)據(jù)創(chuàng)建一個(gè)RecordSet記錄集合,然后即可利用RecordSet對象的各種屬性和方法對這個(gè)記錄集合中的數(shù)據(jù)進(jìn)行各種操作處理。9.5RecordSet對象9.5.1RecordSet對象運(yùn)用實(shí)例9.5.2RecordSet對象的屬性9.5.3RecordSet對象的方法【任務(wù)引入】在網(wǎng)站搜索、用戶管理或論壇留言管理時(shí),如果記錄數(shù)非常多,把這些記錄全部顯示在一張網(wǎng)頁上,是非常不明智的,瀏覽的時(shí)候會非常不方便,這時(shí)應(yīng)該采用分頁顯示記錄的方法,將所有記錄分多頁顯示?!救蝿?wù)目標(biāo)】體會RecordSet對象中多種方法和屬性的含義及使用方式?!救蝿?wù)內(nèi)容】把指定數(shù)據(jù)庫“Guest”中的數(shù)據(jù)表“information”里的記錄分頁顯示,限定每頁只顯示5條記錄。【任務(wù)分析】①創(chuàng)建名為“Guest”的數(shù)據(jù)庫及名為“information”的數(shù)據(jù)表,并錄入多條記錄。②連接并打開數(shù)據(jù)庫“Guest”,并且打開數(shù)據(jù)表“information”。③運(yùn)用Recordset對象提供的3個(gè)專門支持分頁處理的屬性PageSize

、PageCount

、AbSolutePage屬性及其他屬性和方法,實(shí)現(xiàn)記錄分頁顯示輸出。9.5.1RecordSet對象運(yùn)用實(shí)例【結(jié)果示范】

【任務(wù)小結(jié)】上述程序采用直接ODBC驅(qū)動方式連接數(shù)據(jù)庫,并打開記錄集。然后使用RecordSet對象提供的多種屬性和方法,控制記錄指針逐條顯示出記錄直到表中的最后一條記錄顯示輸出為止,并且保證每頁最多只顯示5條記錄。記錄集可以用來代表表中的記錄。一個(gè)記錄集包含一條或多條記錄,每個(gè)記錄包括一個(gè)或多個(gè)字段。在任何時(shí)候,只有一條記錄是當(dāng)前記錄。屬性功能說明AbsolutePage指定當(dāng)前頁AbsolutePosition用來設(shè)置或讀取當(dāng)前記錄在記錄集中的位置順序號ActiveConnection指示指定的RecordSet對象當(dāng)前所屬的Connection對象BOF表明當(dāng)前位置在記錄集中的第一條記錄之前Bookmark返回惟一標(biāo)識RecordSet對象中當(dāng)前記錄的書簽9.5.2RecordSet對象的屬性CursorLocation設(shè)置或返回記錄集中記錄指針的位置CursorType指示在RecordSet對象中使用的記錄指針類型LockType設(shè)置記錄寫入數(shù)據(jù)庫的方式EOF表明當(dāng)前位置在記錄集中的最后一條記錄之后MaxRecords限制從數(shù)據(jù)庫中查詢返回到一個(gè)記錄集中的記錄數(shù)目PageCount返回記錄集中的邏輯頁數(shù)PageSize指定一個(gè)邏輯頁中的記錄個(gè)數(shù),默認(rèn)值為10條RecordCount表示一個(gè)記錄集中的記錄總數(shù)Sort指定對RecordSet記錄集進(jìn)行排序的一個(gè)或多個(gè)關(guān)鍵字段名,并可指定升序或降序排列Filter設(shè)置對RecordSet記錄集進(jìn)行過濾的條件規(guī)則在Recordset對象眾多屬性中,我們重點(diǎn)關(guān)注以下幾個(gè)屬性:1.CursorType屬性2.LockType屬性3.BOF屬性4.EOF屬性5.Sort屬性6.Filter屬性9.5.3RecordSet對象的方法方法功能說明AddNew向記錄集中添加一條新記錄Delete從記錄集中刪除一條記錄Find在記錄集中查找指定的記錄GetRows將Recordset對象的多個(gè)記錄讀取到數(shù)組中MoveNum在記錄集中向前或向后移動指定數(shù)目的記錄數(shù)MoveFirst移動到記錄集的第一條記錄MoveLast移動到記錄集的最后一條記錄MoveNext移動到記錄集的下一條記錄MovePrevious移動到記錄集的上一條記錄Open打開記錄集Update保存對當(dāng)前記錄所做的修改UpdateBatch當(dāng)記錄集處于批量更新模式時(shí),保存對該批記錄的修改CancelUpdate取消對Recordset對象中某條記錄的更新CancelBatch取消批處理更新特別注意下列方法:1.Open方法一般使用Recordset對象的Open方法創(chuàng)建一個(gè)記錄集。其語法格式為:RecordSet.OpenSource,ActiveConnection

,CursorType

,LockType游標(biāo)類型及記錄鎖定方式請參看9.5.2小節(jié)表9-5、表9-6內(nèi)容。

2.MoveNum方法Num為具體數(shù)字,表示將指針由當(dāng)前位置向下移動Num條記錄,此時(shí)記錄指針實(shí)際指向的是第Num+1條記錄。例如:新打開一張數(shù)據(jù)表,然后執(zhí)行命令Objrs.Move9,此時(shí)若執(zhí)行輸出記錄命令,實(shí)際輸出的是第10條記錄內(nèi)容。9.6數(shù)據(jù)庫查詢和排序SQL主要具備以下優(yōu)點(diǎn):①SQL是一種一體化的語言,提供了完整的數(shù)據(jù)定義和操作功能。②SQL具有完備的查詢功能。③SQL非常簡潔,易學(xué)易用。④SQL是一種高度非過程化的語言,用戶只需說明想要做什么操作即可。⑤SQL的執(zhí)行方式多樣,既能以交互命令方式直接使用,也能嵌入到各種高級語言中使用。盡管使用方式可以不同,但其語法結(jié)構(gòu)是一致的。⑥SQL不僅能對數(shù)據(jù)表進(jìn)行各種操作,并可對視圖進(jìn)行操作。9.6數(shù)據(jù)庫查詢和排序9.6.1數(shù)據(jù)庫查詢和排序9.6.2數(shù)據(jù)庫查詢中的通配符使用及多表查詢9.6.1數(shù)據(jù)庫查詢和排序【任務(wù)引入】對數(shù)據(jù)庫的使用一般不是簡單的直接輸出,而是需要對某些特定記錄做加工處理,我們往往使用SQL語句依據(jù)指定條件對記錄進(jìn)行查詢或排序。【任務(wù)目標(biāo)】掌握使用SQL語句實(shí)現(xiàn)對數(shù)據(jù)表中記錄的查詢和排序等操作?!救蝿?wù)內(nèi)容】按指定要求完成輸出部分字段、查詢特定記錄、將所有記錄以某個(gè)字段為關(guān)鍵字排序、輸出指定記錄條數(shù)以及生成虛擬字段等相關(guān)操作。【任務(wù)分析】用于數(shù)據(jù)庫查詢的Select命令是最常用的SQL命令,它的基本語法格式為:Select<輸出項(xiàng)列表>From<表名>[Where<篩選條件>][OrderBy<排序關(guān)鍵字>[ASC|DESC]]【任務(wù)小結(jié)】①其中的Select短語和From短語是必須存在的,而用方括號括起來的Where短語和OrderBy短語是可選的。②Select短語指明要在查詢后輸出哪幾項(xiàng)內(nèi)容,各項(xiàng)內(nèi)容之間應(yīng)有逗號隔開。“Select*”表示輸出原表中所有字段內(nèi)容;“SelectTopn”表示輸出排列在前面的n條記錄。③From短語指明要查詢的數(shù)據(jù)來自哪個(gè)數(shù)據(jù)表。④Where短語用來指定查詢的篩選條件,該條件可以是任何合法的邏輯表達(dá)式。⑤OrderBy短語用來設(shè)定對查詢結(jié)果按指定的關(guān)鍵字排序后輸出。ASC為升序,DESC為降序,默認(rèn)為升序。9.6.2數(shù)據(jù)庫查詢中的通配符使用及多表查詢【任務(wù)引入】對數(shù)據(jù)庫的使用一般不是簡單的直接輸出,而是需要對某些特定記錄做加工處理,我們往往使用SQL語句依據(jù)指定條件對記錄進(jìn)行查詢或排序。【任務(wù)目標(biāo)】掌握使用SQL語句實(shí)現(xiàn)對數(shù)據(jù)表中記錄的查詢和排序等操作?!救蝿?wù)內(nèi)容】按指定要求完成輸出部分字段、查詢特定記錄、將所有記錄以某個(gè)字段為關(guān)鍵字排序、輸出指定記錄條數(shù)以及生成虛擬字段等相關(guān)操作。【任務(wù)分析】用于數(shù)據(jù)庫查詢的Select命令是最常用的SQL命令,它的基本語法格式為:Select<輸出項(xiàng)列表>From<表名>[Where<篩選條件>][OrderBy<排序關(guān)鍵字>[ASC|DESC]]1.SQL查詢語句中的通配符在SQL查詢語句中,除了前面看到的比較運(yùn)算符和邏輯運(yùn)算符之外,SQL語法也支持LIKE運(yùn)算符,并提供了四種通配符,其含義如下表:通配符功能說明%包含零個(gè)或更多字符的任意字符串_任何單個(gè)字符[]指定范圍(例如

[a-f])或集合(例如

[abcdef])內(nèi)的任何單個(gè)字符[^]不在指定范圍(例如

[^a-f])或集合(例如

[^abcdef])內(nèi)的任何單個(gè)字符2.SQL多表查詢在一個(gè)數(shù)據(jù)庫中往往不止一個(gè)數(shù)據(jù)表,客戶的資料通常分類存儲在多張數(shù)據(jù)表中,各表的關(guān)鍵字段相同,能夠使用該關(guān)鍵字段一并查詢或刪除多張表中的某條記錄的所有字段信息。這樣可以大大提高數(shù)據(jù)庫訪問的效率,同時(shí)也能減少數(shù)據(jù)庫備份時(shí)花費(fèi)的時(shí)間。下面我們來具體看一下如何在數(shù)據(jù)庫的兩張數(shù)據(jù)表中提取字段信息:在“Guest”的兩張數(shù)據(jù)表中查詢編號相同的記錄,將記錄的所有字段一并輸出。其SQL查詢命令為:Sql=“SelectInformation.*,Score.*FromInformationinnerjoinOn

Information.編號=Score.編號”9.7記錄的插入、更新和刪除操作對數(shù)據(jù)庫的操作除了前面講述的查詢和排序外,還有對數(shù)據(jù)庫中記錄的新增、更新和刪除,這些操作事實(shí)上都有兩種方式來完成。一是使用SQL語句的INSERT、DELETE、UPDATE指令來實(shí)現(xiàn);二是使用Recordset對象的AddNew、UpDate、Delete方法來實(shí)現(xiàn)。9.7記錄的插入、更新和刪除操作9.7.1記錄的插入9.7.2記錄的更新9.7.3記錄的刪除9.7.4表單與數(shù)據(jù)庫9.7.1記錄的插入【任務(wù)引入】在實(shí)際運(yùn)用中,我們會經(jīng)常需要向數(shù)據(jù)庫中追加記錄,下面我們就來學(xué)習(xí)如何向數(shù)據(jù)庫中增加一條記錄?!救蝿?wù)目標(biāo)】掌握使用SQL語句中的INSERT指令和Recordset對象的AddNew方法實(shí)現(xiàn)新增記錄操作?!救蝿?wù)內(nèi)容】向數(shù)據(jù)庫“db1.mdb”的“xinxi”表中,新增一條記錄。【任務(wù)分析】在數(shù)據(jù)表中由于存在關(guān)鍵字字段,所以必須保證關(guān)鍵字字段內(nèi)容不重復(fù)。然后才能運(yùn)用AddNew方法或INSERT指令實(shí)現(xiàn)記錄的追加操作?!窘Y(jié)果示范】

【任務(wù)小結(jié)】①每次向數(shù)據(jù)庫中新增的記錄都處于數(shù)據(jù)表的最末尾。②使用Recordset對象的AddNew方法時(shí),先創(chuàng)建一個(gè)Recordset對象并調(diào)用該對象的AddNew方法添加一條空記錄,然后分別為該記錄的各個(gè)字段賦值,最后再調(diào)用Recordset對象的Update方法將所添加的記錄數(shù)據(jù)保存到指定數(shù)據(jù)表中。9.7.2記錄的更新【任務(wù)引入】在實(shí)際運(yùn)用中,數(shù)據(jù)庫中的記錄不可能是一成不變的,它隨時(shí)都可能會更新,下面我們就來學(xué)習(xí)如何更新數(shù)據(jù)庫中的記錄?!救蝿?wù)目標(biāo)】掌握使用SQL語句中的UPDATE指令和Recordset對象的Update方法實(shí)現(xiàn)更新記錄操作?!救蝿?wù)內(nèi)容】按要求更新數(shù)據(jù)庫中滿足條件的記錄部分或所有字段內(nèi)容?!救蝿?wù)分析】在做更新操作前,必須查看整個(gè)數(shù)據(jù)表中是否有符合條件的一條或多條記錄,然后才能更新這些記錄的字段內(nèi)容,若沒有找到這樣的記錄,則不執(zhí)行更新操作?!境绦虼a】①使用SQL的UPDATE指令更新記錄的代碼段。

<%dimobjconn,objrs,str,sqlsetobjconn=server.CreateObject("adodb.connection")

str="provider=microsoft.jet.oledb.4.0;data_source="&server.MapPath("db1.mdb")

objconn.open

str

sql="updatexinxiset年齡=29where姓名='咖啡'"

objconn.execute

sql%>②使用RecordSet對象的Update方法更新記錄的代碼段。<%dimobjconn,objrs,str,sqlsetobjconn=server.CreateObject("adodb.connection")

str="provider=microsoft.jet.oledb.4.0;data_source="&server.MapPath("db1.mdb")

objconn.open

strsetobjrs=server.CreateObject("adodb.recordset")

objrs.open"xinxi",objconn,3,3whilenotobjrs.eof ifobjrs("姓名")="客觀"then

objrs("姓名")="擴(kuò)大經(jīng)過"

objrs("年齡")=28 endif

objrs.movenext wend

objrs.updatebatch%>【結(jié)果示范】

【任務(wù)小結(jié)】①查找整個(gè)數(shù)據(jù)表,只有找到滿足條件的記錄后才能執(zhí)行更新操作。②采用RecordSet對象的更新記錄方法對記錄進(jìn)行更新操作時(shí),若滿足條件的記錄有多條,此時(shí)應(yīng)使用Updatebatch方法對這些記錄做批處理。

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論