




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
ASP動(dòng)態(tài)網(wǎng)頁(yè)設(shè)計(jì)第9章ASP與數(shù)據(jù)庫(kù)操作9.1ADO概述
9.2創(chuàng)建ODBCDSN文件
9.3Connection對(duì)象
9.4Command對(duì)象
9.5RecordSet對(duì)象9.6數(shù)據(jù)庫(kù)查詢和排序9.7記錄的插入、更新和刪除操作3.記憶力強(qiáng)計(jì)算機(jī)的存儲(chǔ)器類似于人的大腦,可以“記憶”(存儲(chǔ))大量的數(shù)據(jù)和信息,在計(jì)算的同時(shí),還可以把中間結(jié)果存儲(chǔ)起來,供以后使用。第9章ASP與數(shù)據(jù)庫(kù)操作學(xué)習(xí)目標(biāo)1.明確什么是ADO,了解ADO的對(duì)象和操作流程。2.掌握配置數(shù)據(jù)庫(kù)DSN的方法。3.掌握Connection對(duì)象的屬性和方法,以便管理數(shù)據(jù)庫(kù)的連接。4.掌握Command對(duì)象的屬性和方法,以便完成數(shù)據(jù)庫(kù)操作。5.掌握Recordset對(duì)象的屬性和方法,以便管理數(shù)據(jù)庫(kù)記錄集。6.運(yùn)用SQL語(yǔ)句實(shí)現(xiàn)數(shù)據(jù)庫(kù)的查詢和排序。7.掌握運(yùn)用SQL語(yǔ)句和記錄集的方式,完成記錄的插入、更新和刪除操作。9.1ADO概述
ADO(ActiveXDataObject)是ASP內(nèi)置的一個(gè)用于數(shù)據(jù)庫(kù)訪問的組件,是ASP的核心技術(shù)之一。Web數(shù)據(jù)庫(kù)則是Web技術(shù)和數(shù)據(jù)庫(kù)技術(shù)相結(jié)合的產(chǎn)物,網(wǎng)上辦公、電子商務(wù)、在線注冊(cè)與搜索等都需要利用Web數(shù)據(jù)庫(kù)來存儲(chǔ)和管理數(shù)據(jù)。ASP與ADO相結(jié)合,完整地解決了網(wǎng)頁(yè)與數(shù)據(jù)庫(kù)的連接與集成問題,實(shí)現(xiàn)了客戶端瀏覽器對(duì)Web數(shù)據(jù)庫(kù)靈活而有效的訪問,從而提供了對(duì)各種Web應(yīng)用的強(qiáng)大支持。9.1ADO概述9.1.1ADO的對(duì)象9.1.2ADO的操作流程9.1.1ADO的對(duì)象ADO提供的七個(gè)對(duì)象與四個(gè)數(shù)據(jù)集合分述如下:1.Connection對(duì)象負(fù)責(zé)與指定的數(shù)據(jù)來源進(jìn)行連接,Connection對(duì)象除了與數(shù)據(jù)來源進(jìn)行連接之外,它還可以通過事務(wù)(Transaction)來確保在事務(wù)中所有數(shù)據(jù)來源變更的全部成功。2.Command對(duì)象負(fù)責(zé)對(duì)數(shù)據(jù)庫(kù)提供請(qǐng)求,也就是傳遞指定的SQL命令。換言之,Command對(duì)象必須經(jīng)由一個(gè)已經(jīng)建立的聯(lián)機(jī)(Connection對(duì)象)發(fā)出數(shù)據(jù)處理語(yǔ)言(DML,DataManipulationLanguage)來操作數(shù)據(jù)來源的數(shù)據(jù),這些命令通常包括INSERT(新增記錄)、DELETE(刪除記錄)、UPDATE(更新記錄)、或是SELECT(以RecordSet的形式選取數(shù)據(jù))等。除此之外,您也可以通過Command對(duì)象對(duì)數(shù)據(jù)庫(kù)發(fā)出數(shù)據(jù)定義語(yǔ)言(DDL,DataDefinitionLanguage),例如CREATETABLE(建立數(shù)據(jù)表)、DROPTABLE(刪除數(shù)據(jù)表)或ALTERTABLE(修改數(shù)據(jù)表結(jié)構(gòu))等。3.Parameter對(duì)象負(fù)責(zé)傳遞Command對(duì)象所需要的SQL命令參數(shù)。4.RecordSet對(duì)象負(fù)責(zé)瀏覽與操作從數(shù)據(jù)庫(kù)取出的數(shù)據(jù)。換言之,RecordSet對(duì)象就像是一個(gè)二維的數(shù)組,數(shù)組的每一行代表一個(gè)數(shù)據(jù)行,而每一個(gè)數(shù)據(jù)行包含一個(gè)或多個(gè)數(shù)據(jù)域位,這里的一個(gè)數(shù)據(jù)字段就是代表一個(gè)Field對(duì)象。5.Field對(duì)象代表指定的RecordSet對(duì)象的數(shù)據(jù)字段。6.Property對(duì)象代表ADO的各項(xiàng)對(duì)象屬性值。換言之,每一個(gè)ADO對(duì)象都會(huì)有一組描述或控制對(duì)象行的屬性。7.Error對(duì)象負(fù)責(zé)記錄聯(lián)機(jī)過程所發(fā)生的錯(cuò)誤信息。8.Errors數(shù)據(jù)集合Connection對(duì)象包含Errors數(shù)據(jù)集合,在Errors數(shù)據(jù)集合中包含數(shù)據(jù)來源響應(yīng)萬一失敗所建立的Error對(duì)象。9.Parameters數(shù)據(jù)集合Command對(duì)象包含Parameters數(shù)據(jù)集合,在Parameters數(shù)據(jù)集合中包括Command對(duì)象所有的Parameter對(duì)象。10.Fields數(shù)據(jù)集合RecordSet對(duì)象包含F(xiàn)ields數(shù)據(jù)集合,在Fields數(shù)據(jù)集合中包含RecordSet對(duì)象的所有Field數(shù)據(jù)字段對(duì)象。11.Properties數(shù)據(jù)集合Connection對(duì)象、Command對(duì)象、RecordSet對(duì)象與Field對(duì)象均包含一個(gè)Properties數(shù)據(jù)集合,在Properties數(shù)據(jù)集合中包含所對(duì)應(yīng)Connection對(duì)象、Command對(duì)象、RecordSet對(duì)象與Field對(duì)象的Property對(duì)象。9.1.2ADO的操作流程利用ASP與ADO訪問Web數(shù)據(jù)庫(kù)的過程如圖9.2創(chuàng)建ODBCDSN文件在開始使用ADO之前,首先要?jiǎng)?chuàng)建一個(gè)與ADO能交互連接的數(shù)據(jù)庫(kù)。這通常要通過在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簡(jiǎn)介9.2.2配置數(shù)據(jù)庫(kù)文件的DSN9.2.1ODBC簡(jiǎn)介
Microsoft公司的OpenDataBase
Connectivity(ODBC)API是最早商品化的WindowsOpenService(開放服務(wù))API(WOSA)產(chǎn)品之一。WOSA是一套Windows應(yīng)用程序的編程界面,其目的是簡(jiǎn)化Windows環(huán)境下很多過程的設(shè)計(jì)并使其標(biāo)準(zhǔn)化。ODBCAPI由WindowsDLL構(gòu)成,WindowsDLL包括一系列的函數(shù)可以對(duì)所有適合ODBC驅(qū)動(dòng)程序的數(shù)據(jù)庫(kù)類型提供兩種版本的數(shù)據(jù)庫(kù)服務(wù):①安裝、設(shè)置和清除ODBC數(shù)據(jù)源。②ODBC驅(qū)動(dòng)管理程序?yàn)閿?shù)據(jù)源打開ODBC驅(qū)動(dòng)程序并將SQL語(yǔ)句傳送給驅(qū)動(dòng)程序。9.2.2配置數(shù)據(jù)庫(kù)文件的DSN任務(wù)引入】實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的鏈接是完成ADO對(duì)數(shù)據(jù)庫(kù)操作的首要任務(wù),配置數(shù)據(jù)源名(DataSourceName,DSN)是任務(wù)的前提?!救蝿?wù)目標(biāo)】通過“控制面板”中的ODBC驅(qū)動(dòng)程序?qū)σ呀?jīng)存在的數(shù)據(jù)庫(kù)進(jìn)行配置DSN操作?!救蝿?wù)內(nèi)容】運(yùn)用Access創(chuàng)建一個(gè)名為MyList.mdb的數(shù)據(jù)庫(kù),并創(chuàng)建一張數(shù)據(jù)表取名為MyTable,
再在表中錄入若干條記錄,最后配置該數(shù)據(jù)庫(kù)的DSN?!救蝿?wù)分析】該任務(wù)可以分成兩個(gè)大的步驟:①創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)表,并錄入記錄。②為該數(shù)據(jù)庫(kù)文件創(chuàng)建系統(tǒng)DSN?!境绦虼a】①創(chuàng)建數(shù)據(jù)庫(kù)文件MyList.mdb,并創(chuàng)建數(shù)據(jù)表MyTable,然后在其中錄入6條記錄。MyList.mdb數(shù)據(jù)庫(kù)由以下字段構(gòu)成:編號(hào)、姓名、婚否、工資、生日、電話、住址。各字段名稱及類型見圖所示。②在數(shù)據(jù)表中錄入如圖所示的7條記錄。③在控制面版中,雙擊“ODBC數(shù)據(jù)源”圖標(biāo);在彈出的“ODBC數(shù)據(jù)源管理器”對(duì)話框(見圖)中選擇“系統(tǒng)DSN”標(biāo)簽。④在“系統(tǒng)DSN”標(biāo)簽頁(yè)中單擊“添加”按鈕;在彈出的“創(chuàng)建新數(shù)據(jù)源”對(duì)話框(見圖9.8)中選中“MicrosoftAccessDriver(*.mdb)”選項(xiàng),單擊“完成”按鈕。⑤在彈出的“ODBCMicrosoftAccess安裝”對(duì)話框(見圖9.9)中填寫各欄所需的數(shù)據(jù)?!皵?shù)據(jù)源名”一欄為必填項(xiàng)(如此處填person),所填數(shù)據(jù)將成為ADO所連接的數(shù)據(jù)源名,ADO就是通過該名對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作?!懊枋觥睓诳梢圆惶?。在“數(shù)據(jù)庫(kù)”一欄中,單擊“選取”按鈕,打開“選定數(shù)據(jù)庫(kù)”窗口(圖9.10),選取進(jìn)行操作的實(shí)際數(shù)據(jù)庫(kù)。該數(shù)據(jù)庫(kù)既可以位于本地機(jī),也可以位于網(wǎng)絡(luò)的共享目錄中。選定數(shù)據(jù)庫(kù)后再返回“ODBCMicrosoftAccess安裝”對(duì)話框,“數(shù)據(jù)庫(kù)”欄中會(huì)有所選定數(shù)據(jù)庫(kù)的詳細(xì)地址。連續(xù)按確定,依次關(guān)閉各對(duì)話框,返回控制面板?!窘Y(jié)果示范】經(jīng)過上述操作,就配置好了一個(gè)名為person的數(shù)據(jù)源(在圖9.11的窗口出現(xiàn)),該數(shù)據(jù)源連接一個(gè)Access2003數(shù)據(jù)庫(kù)MyList.mdb。后面的章節(jié)中我們常要用到。9.3Connection對(duì)象
ADO組件中的Connection對(duì)象負(fù)責(zé)與實(shí)際數(shù)據(jù)庫(kù)的連接動(dòng)作,其他所有對(duì)象都必須依賴此對(duì)象實(shí)現(xiàn)連接后才能發(fā)揮各自的功能。由于Connection對(duì)象和Command對(duì)象以及Recordset對(duì)象都是屬于ADO組件的對(duì)象,因而它們都需要首先用Server對(duì)象的
CreatObject方法創(chuàng)建一個(gè)對(duì)應(yīng)的實(shí)例后才能使用。9.3Connection對(duì)象9.3.1Connection對(duì)象運(yùn)用實(shí)例9.3.2Connection對(duì)象的屬性9.3.3Connection對(duì)象的方法9.3.4打開和關(guān)閉數(shù)據(jù)庫(kù)連接9.3.1Connection對(duì)象運(yùn)用實(shí)例【任務(wù)引入】創(chuàng)建并配置好某個(gè)數(shù)據(jù)庫(kù)的系統(tǒng)DSN之后,自然應(yīng)該對(duì)該數(shù)據(jù)庫(kù)進(jìn)行相應(yīng)操作,通過此任務(wù)我們來看看是怎樣通過Connection對(duì)象來訪問數(shù)據(jù)庫(kù)的?!救蝿?wù)目標(biāo)】理解Connection對(duì)象常用屬性和方法的使用。【任務(wù)內(nèi)容】利用上面已建好的Access2003數(shù)據(jù)庫(kù)MyList.mdb和配置好的數(shù)據(jù)源名person,建立與數(shù)據(jù)庫(kù)的連接,并向數(shù)據(jù)庫(kù)中追加一條記錄。【任務(wù)分析】該任務(wù)可以分成兩個(gè)大的步驟:①打開并連接數(shù)據(jù)庫(kù)。②向數(shù)據(jù)庫(kù)中追加一條記錄?!境绦虼a】<%@LANGUAGE="VBSCRIPT"CODEPAGE="936"%><html><head><title>插入記錄</title></head><body><%ConstRecordsAffected=0'定義符號(hào)常量
ConstadCmdText=1SetMyConn=Server.CreateObject("ADODB.Connection")
MyConn.ConnectionString="DSN=person;UID=;PWD=;"
MyConn.Open'打開與數(shù)據(jù)庫(kù)的連接CommandText="INSERTINTOMyTable(編號(hào),姓名,婚否,工資,生日,電話,"&_"住址)Values(8,'劉小小',yes,562,1978-4-25,54818751,'芙蓉路158號(hào)')"
MyConn.Execute
CommandText,RecordsAffected,adCmdText
MyConn.Close'關(guān)閉與數(shù)據(jù)庫(kù)的連接
SetMyConn=Nothing'釋放Connection對(duì)象
Response.Write"已向數(shù)據(jù)庫(kù)中追加了一條記錄!"%></body></html>【結(jié)果示范】
【任務(wù)小結(jié)】從上述任務(wù)我們可以看出,要對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,運(yùn)用Connection對(duì)象建立并打開數(shù)據(jù)庫(kù)連接是首要環(huán)節(jié),下面我們就來具體了解Connection對(duì)象的方法和屬性。【任務(wù)引入】創(chuàng)建并配置好某個(gè)數(shù)據(jù)庫(kù)的系統(tǒng)DSN時(shí),可能會(huì)出現(xiàn)只允許某個(gè)特定用戶根據(jù)密碼才能訪問數(shù)據(jù)庫(kù),那么在建立并打開數(shù)據(jù)庫(kù)連接時(shí)就需要加入用戶ID和用戶密碼信息,否則不能打開數(shù)據(jù)庫(kù)。Connection對(duì)象的ConnectionString屬性是如何來加載這些數(shù)據(jù)信息的呢?【任務(wù)目標(biāo)】掌握ConnectionString屬性的使用。【任務(wù)內(nèi)容】根據(jù)前面9.2.2小節(jié)中已建好的Access2003數(shù)據(jù)庫(kù)MyList.mdb和配置好的數(shù)據(jù)源名person,并設(shè)置了用戶ID為“test”,登錄密碼為“123456”。下面運(yùn)用Connection對(duì)象的ConnectionString屬性來打開該數(shù)據(jù)庫(kù)文件。9.3.2Connection對(duì)象的屬性1.ConnectionString屬性【任務(wù)分析】該任務(wù)的注意事項(xiàng):①運(yùn)用ConnectionString屬性連接數(shù)據(jù)源名person,以便打開并連接數(shù)據(jù)庫(kù)。②加載用戶ID和登錄密碼?!境绦虼a】SetMyConn=Server.CreateObject("ADODB.Connection")
MyConn.ConnectionString="DSN=person;UID=test;PWD=123456;"
MyConn.Open'打開與數(shù)據(jù)庫(kù)的連接【任務(wù)小結(jié)】ConnectionString
:包含用于連接數(shù)據(jù)庫(kù)的信息字符串,該參數(shù)由分號(hào)分隔的一系列“參數(shù)=值”語(yǔ)句組成。UID:表示登錄數(shù)據(jù)庫(kù)時(shí)所指定的用戶賬號(hào)。PWD:表示登錄數(shù)據(jù)庫(kù)時(shí)所指定的用戶密碼。ConnectionTimeout屬性用來設(shè)置Connection對(duì)象的Open方法試圖與數(shù)據(jù)庫(kù)連接的最長(zhǎng)等待時(shí)間,系統(tǒng)默認(rèn)值為15秒。如果將此值設(shè)置為0,系統(tǒng)則會(huì)一直等待直到連接成功為止。此屬性的設(shè)置必須在連接之前或取消連接之后。格式為:Connection.ConnectionTimeout=seconds2.ConnectionTimeout屬性該屬性用來設(shè)置執(zhí)行Connection對(duì)象的Execute方法時(shí)的最長(zhǎng)等待時(shí)間,默認(rèn)值為30秒。如果此值設(shè)置為0,系統(tǒng)則會(huì)一直等待直到執(zhí)行結(jié)束為止。此屬性的設(shè)置必須在Execute方法執(zhí)行之前。格式為:Connection.CommandTimeout=seconds3.CommandTimeout屬性
該屬性用來取得或設(shè)置Connection對(duì)象提供者的名稱,即數(shù)據(jù)庫(kù)管理程序的名稱。ADO默認(rèn)的Provider屬性值為:MicrosoftOLEDBProviderForODBC,它負(fù)責(zé)管理所有以O(shè)LEDB方式連接的數(shù)據(jù)庫(kù)。4.Provider屬性5.其他屬性屬性說明Mode設(shè)置連接的權(quán)限,例如只讀或只寫Attributes設(shè)置或返回Connection對(duì)象的特性CursorLocation設(shè)置或返回游標(biāo)處理的位置DefaultDatabase設(shè)置或返回Connection對(duì)象默認(rèn)的數(shù)據(jù)庫(kù)IsolationLevel設(shè)置Connection對(duì)象的事務(wù)隔離級(jí)別,只寫State返回Connection對(duì)象的當(dāng)前狀態(tài),只讀Version返回當(dāng)前ADO的版本信息,只讀1.Open方法Connection對(duì)象使用Open方法打開與數(shù)據(jù)庫(kù)的連接,只有在使用本方法之后,才能打開記錄集,對(duì)數(shù)據(jù)表做相應(yīng)操作。格式為:Connection.Open
ConnectionString
,UID,PWD2.Execute方法
當(dāng)使用Connection對(duì)象打開與數(shù)據(jù)庫(kù)的連接后,就可以直接使用Execute方法執(zhí)行有關(guān)的SQL語(yǔ)句或數(shù)據(jù)庫(kù)的存儲(chǔ)過程來對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。9.3.3Connection對(duì)象的方法3.Close方法Connection對(duì)象的Close方法負(fù)責(zé)關(guān)閉一個(gè)已經(jīng)啟動(dòng)的連接對(duì)象及其相關(guān)的對(duì)象,語(yǔ)句格式為:
Connection.Close關(guān)閉一個(gè)連接對(duì)象并非將其從內(nèi)存中刪除,在以后可以再重新打開。若要將被關(guān)閉的連接對(duì)象徹底從內(nèi)存中刪除,應(yīng)使用Set命令將該對(duì)象變量設(shè)置為Nothing?!救蝿?wù)引入】在前面的小節(jié)中,我們通過創(chuàng)建系統(tǒng)DSN文件與指定數(shù)據(jù)庫(kù)之間建立連接,并對(duì)數(shù)據(jù)庫(kù)進(jìn)行相關(guān)操作。在此我們考慮,若沒有配置DSN,又應(yīng)該如何建立并打開數(shù)據(jù)庫(kù)呢?【任務(wù)目標(biāo)】掌握通過腳本程序,直接建立數(shù)據(jù)庫(kù)連接的方法?!救蝿?wù)內(nèi)容】運(yùn)用VBScript服務(wù)器端腳本程序,直接建立與指定數(shù)據(jù)庫(kù)“MyList.mdb”的連接?!救蝿?wù)分析】該任務(wù)的注意事項(xiàng):①提供一個(gè)數(shù)據(jù)庫(kù)文件,并知道它的數(shù)據(jù)庫(kù)類型和名稱。②在程序中需要指明打開該數(shù)據(jù)庫(kù)文件所需的驅(qū)動(dòng)程序以及數(shù)據(jù)庫(kù)的位置。9.3.4打開和關(guān)閉數(shù)據(jù)庫(kù)連接【程序代碼】SetObjconn=Server.CreateObject("ADODB.Connection")
str="driver={MicrosoftAccessDriver(*.mdb)};dbq="&_server.mappath("MyList.mdb")
Objconn.Open
str【任務(wù)小結(jié)】由于數(shù)據(jù)庫(kù)“MyList.mdb”是用Access2003創(chuàng)建的,所以打開該數(shù)據(jù)庫(kù)就應(yīng)該選用微軟公司默認(rèn)的驅(qū)動(dòng)程序“MicrosoftAccessDriver(*.mdb)”,而通過Server對(duì)象的MapPath方法來獲取該數(shù)據(jù)庫(kù)的物理路徑。上述任務(wù)中,我們采用的是直接ODBC連接方式,其實(shí)還有一種數(shù)據(jù)庫(kù)連接方式,被稱為OLEDB方式,其效率比ODBC方式更高。具體代碼如下:SetObjconn=Server.CreateObject("ADODB.Connection")
str="provider=Microsoft.jet.oledb.4.0;datasource="&_server.mappath("MyList.mdb")
Objconn.Open
str9.4Command對(duì)象從英語(yǔ)字面的意思就可以看出,Command是用來做命令執(zhí)行和參數(shù)傳遞的。而Command對(duì)象的批量參數(shù)傳遞,StoredProcude執(zhí)行等靈活而強(qiáng)大的功能也是它受到青睞的原因。Command對(duì)象主要是向SQL語(yǔ)句、StoredProcude傳遞參數(shù),依靠SQLServer的強(qiáng)大功能來完成數(shù)據(jù)庫(kù)的操作;而RecordSet對(duì)象可以說是微軟重新封裝了數(shù)據(jù)對(duì)象,并提供了一系列的方法和屬性來簡(jiǎn)化數(shù)據(jù)庫(kù)的編程。因?yàn)镃ommand對(duì)象就是將SQL產(chǎn)生的記錄集作為整體來處理,所以性能較為優(yōu)越,其可重應(yīng)用性也非常的好。下面具體介紹Command對(duì)象的屬性、方法和集合。1.CreateParameter方法用來產(chǎn)生一個(gè)Parameter對(duì)象,常用的寫法為Setparam=comm.CreateParameter(name,
type,direction,size,value),其中name為參數(shù)的引用名,在后面引用參數(shù)的值時(shí)會(huì)用到;type為指定參數(shù)的類型,例如整數(shù)為adInteger;direction指定參數(shù)是輸入還是輸出,相應(yīng)的值為adParamInput和adParamOutput;size指定參數(shù)的最大長(zhǎng)度或最大的值;value指定參數(shù)的值??梢詫⒏鱾€(gè)選項(xiàng)分開來寫,下面的兩種寫法是等價(jià)的:Setparam=comm.CreateParameter(name,type,direction,size,value)
和setparam=comm.CreateParameter(name,type,direction,size)param.value=value下面的方法靈活性更大。請(qǐng)注意,在使用了CreateParameter方法后只是建立了新的parameter對(duì)象,還需使用Parameter對(duì)象的append方法將該參數(shù)傳遞給Command對(duì)象。2.Execute方法在指定了CommandText,并將參數(shù)傳遞出去后,用Execute方法來完成執(zhí)行。與Connection對(duì)象的Execute方法類似,都是負(fù)責(zé)執(zhí)行給定的SQL語(yǔ)句或存儲(chǔ)過程。3.ActiveConnection屬性用來指定與Connection對(duì)象的連接,這里的一個(gè)技巧就是不同的Command對(duì)象指向同一個(gè)Connection連接。4.CommandText屬性CommandText值可以是一條SQL命令句,可以是一個(gè)表名,也可以是一個(gè)StoredProcedure名。5.CommandType屬性CommandType值由CommandText相應(yīng)值的給出,分別為adCmdText,adCmdTable,adCmdStoredProc。與前面在講Connection對(duì)象的Execute方法中相應(yīng)的選項(xiàng)含義相同。6.CommandTimeOut屬性設(shè)定命令執(zhí)行超時(shí)的值。7.Parameters集合就是參數(shù)對(duì)象的集合,它主要有Item方法、Append方法,和Count屬性,用法與Property對(duì)象及Error對(duì)象的相應(yīng)屬性和方法類似。9.5RecordSet對(duì)象
RecordSet對(duì)象是ADO中一個(gè)極為重要且普遍使用的對(duì)象,負(fù)責(zé)從數(shù)據(jù)庫(kù)中取得所需的記錄數(shù)據(jù)并創(chuàng)建一個(gè)記錄集合。用戶在訪問數(shù)據(jù)庫(kù)時(shí),一般先通過Connection對(duì)象建立與指定數(shù)據(jù)庫(kù)的連接,再按所需的要求通過相應(yīng)的SQL命令從數(shù)據(jù)庫(kù)中提取數(shù)據(jù)創(chuàng)建一個(gè)RecordSet記錄集合,然后即可利用RecordSet對(duì)象的各種屬性和方法對(duì)這個(gè)記錄集合中的數(shù)據(jù)進(jìn)行各種操作處理。9.5RecordSet對(duì)象9.5.1RecordSet對(duì)象運(yùn)用實(shí)例9.5.2RecordSet對(duì)象的屬性9.5.3RecordSet對(duì)象的方法【任務(wù)引入】在網(wǎng)站搜索、用戶管理或論壇留言管理時(shí),如果記錄數(shù)非常多,把這些記錄全部顯示在一張網(wǎng)頁(yè)上,是非常不明智的,瀏覽的時(shí)候會(huì)非常不方便,這時(shí)應(yīng)該采用分頁(yè)顯示記錄的方法,將所有記錄分多頁(yè)顯示。【任務(wù)目標(biāo)】體會(huì)RecordSet對(duì)象中多種方法和屬性的含義及使用方式?!救蝿?wù)內(nèi)容】把指定數(shù)據(jù)庫(kù)“Guest”中的數(shù)據(jù)表“information”里的記錄分頁(yè)顯示,限定每頁(yè)只顯示5條記錄?!救蝿?wù)分析】①創(chuàng)建名為“Guest”的數(shù)據(jù)庫(kù)及名為“information”的數(shù)據(jù)表,并錄入多條記錄。②連接并打開數(shù)據(jù)庫(kù)“Guest”,并且打開數(shù)據(jù)表“information”。③運(yùn)用Recordset對(duì)象提供的3個(gè)專門支持分頁(yè)處理的屬性PageSize
、PageCount
、AbSolutePage屬性及其他屬性和方法,實(shí)現(xiàn)記錄分頁(yè)顯示輸出。9.5.1RecordSet對(duì)象運(yùn)用實(shí)例【結(jié)果示范】
【任務(wù)小結(jié)】上述程序采用直接ODBC驅(qū)動(dòng)方式連接數(shù)據(jù)庫(kù),并打開記錄集。然后使用RecordSet對(duì)象提供的多種屬性和方法,控制記錄指針逐條顯示出記錄直到表中的最后一條記錄顯示輸出為止,并且保證每頁(yè)最多只顯示5條記錄。記錄集可以用來代表表中的記錄。一個(gè)記錄集包含一條或多條記錄,每個(gè)記錄包括一個(gè)或多個(gè)字段。在任何時(shí)候,只有一條記錄是當(dāng)前記錄。屬性功能說明AbsolutePage指定當(dāng)前頁(yè)AbsolutePosition用來設(shè)置或讀取當(dāng)前記錄在記錄集中的位置順序號(hào)ActiveConnection指示指定的RecordSet對(duì)象當(dāng)前所屬的Connection對(duì)象BOF表明當(dāng)前位置在記錄集中的第一條記錄之前Bookmark返回惟一標(biāo)識(shí)RecordSet對(duì)象中當(dāng)前記錄的書簽9.5.2RecordSet對(duì)象的屬性CursorLocation設(shè)置或返回記錄集中記錄指針的位置CursorType指示在RecordSet對(duì)象中使用的記錄指針類型LockType設(shè)置記錄寫入數(shù)據(jù)庫(kù)的方式EOF表明當(dāng)前位置在記錄集中的最后一條記錄之后MaxRecords限制從數(shù)據(jù)庫(kù)中查詢返回到一個(gè)記錄集中的記錄數(shù)目PageCount返回記錄集中的邏輯頁(yè)數(shù)PageSize指定一個(gè)邏輯頁(yè)中的記錄個(gè)數(shù),默認(rèn)值為10條RecordCount表示一個(gè)記錄集中的記錄總數(shù)Sort指定對(duì)RecordSet記錄集進(jìn)行排序的一個(gè)或多個(gè)關(guān)鍵字段名,并可指定升序或降序排列Filter設(shè)置對(duì)RecordSet記錄集進(jìn)行過濾的條件規(guī)則在Recordset對(duì)象眾多屬性中,我們重點(diǎn)關(guān)注以下幾個(gè)屬性:1.CursorType屬性2.LockType屬性3.BOF屬性4.EOF屬性5.Sort屬性6.Filter屬性9.5.3RecordSet對(duì)象的方法方法功能說明AddNew向記錄集中添加一條新記錄Delete從記錄集中刪除一條記錄Find在記錄集中查找指定的記錄GetRows將Recordset對(duì)象的多個(gè)記錄讀取到數(shù)組中MoveNum在記錄集中向前或向后移動(dòng)指定數(shù)目的記錄數(shù)MoveFirst移動(dòng)到記錄集的第一條記錄MoveLast移動(dòng)到記錄集的最后一條記錄MoveNext移動(dòng)到記錄集的下一條記錄MovePrevious移動(dòng)到記錄集的上一條記錄Open打開記錄集Update保存對(duì)當(dāng)前記錄所做的修改UpdateBatch當(dāng)記錄集處于批量更新模式時(shí),保存對(duì)該批記錄的修改CancelUpdate取消對(duì)Recordset對(duì)象中某條記錄的更新CancelBatch取消批處理更新特別注意下列方法:1.Open方法一般使用Recordset對(duì)象的Open方法創(chuàng)建一個(gè)記錄集。其語(yǔ)法格式為:RecordSet.OpenSource,ActiveConnection
,CursorType
,LockType游標(biāo)類型及記錄鎖定方式請(qǐng)參看9.5.2小節(jié)表9-5、表9-6內(nèi)容。
2.MoveNum方法Num為具體數(shù)字,表示將指針由當(dāng)前位置向下移動(dòng)Num條記錄,此時(shí)記錄指針實(shí)際指向的是第Num+1條記錄。例如:新打開一張數(shù)據(jù)表,然后執(zhí)行命令Objrs.Move9,此時(shí)若執(zhí)行輸出記錄命令,實(shí)際輸出的是第10條記錄內(nèi)容。9.6數(shù)據(jù)庫(kù)查詢和排序SQL主要具備以下優(yōu)點(diǎn):①SQL是一種一體化的語(yǔ)言,提供了完整的數(shù)據(jù)定義和操作功能。②SQL具有完備的查詢功能。③SQL非常簡(jiǎn)潔,易學(xué)易用。④SQL是一種高度非過程化的語(yǔ)言,用戶只需說明想要做什么操作即可。⑤SQL的執(zhí)行方式多樣,既能以交互命令方式直接使用,也能嵌入到各種高級(jí)語(yǔ)言中使用。盡管使用方式可以不同,但其語(yǔ)法結(jié)構(gòu)是一致的。⑥SQL不僅能對(duì)數(shù)據(jù)表進(jìn)行各種操作,并可對(duì)視圖進(jìn)行操作。9.6數(shù)據(jù)庫(kù)查詢和排序9.6.1數(shù)據(jù)庫(kù)查詢和排序9.6.2數(shù)據(jù)庫(kù)查詢中的通配符使用及多表查詢9.6.1數(shù)據(jù)庫(kù)查詢和排序【任務(wù)引入】對(duì)數(shù)據(jù)庫(kù)的使用一般不是簡(jiǎn)單的直接輸出,而是需要對(duì)某些特定記錄做加工處理,我們往往使用SQL語(yǔ)句依據(jù)指定條件對(duì)記錄進(jìn)行查詢或排序?!救蝿?wù)目標(biāo)】掌握使用SQL語(yǔ)句實(shí)現(xiàn)對(duì)數(shù)據(jù)表中記錄的查詢和排序等操作?!救蝿?wù)內(nèi)容】按指定要求完成輸出部分字段、查詢特定記錄、將所有記錄以某個(gè)字段為關(guān)鍵字排序、輸出指定記錄條數(shù)以及生成虛擬字段等相關(guān)操作。【任務(wù)分析】用于數(shù)據(jù)庫(kù)查詢的Select命令是最常用的SQL命令,它的基本語(yǔ)法格式為:Select<輸出項(xiàng)列表>From<表名>[Where<篩選條件>][OrderBy<排序關(guān)鍵字>[ASC|DESC]]【任務(wù)小結(jié)】①其中的Select短語(yǔ)和From短語(yǔ)是必須存在的,而用方括號(hào)括起來的Where短語(yǔ)和OrderBy短語(yǔ)是可選的。②Select短語(yǔ)指明要在查詢后輸出哪幾項(xiàng)內(nèi)容,各項(xiàng)內(nèi)容之間應(yīng)有逗號(hào)隔開。“Select*”表示輸出原表中所有字段內(nèi)容;“SelectTopn”表示輸出排列在前面的n條記錄。③From短語(yǔ)指明要查詢的數(shù)據(jù)來自哪個(gè)數(shù)據(jù)表。④Where短語(yǔ)用來指定查詢的篩選條件,該條件可以是任何合法的邏輯表達(dá)式。⑤OrderBy短語(yǔ)用來設(shè)定對(duì)查詢結(jié)果按指定的關(guān)鍵字排序后輸出。ASC為升序,DESC為降序,默認(rèn)為升序。9.6.2數(shù)據(jù)庫(kù)查詢中的通配符使用及多表查詢【任務(wù)引入】對(duì)數(shù)據(jù)庫(kù)的使用一般不是簡(jiǎn)單的直接輸出,而是需要對(duì)某些特定記錄做加工處理,我們往往使用SQL語(yǔ)句依據(jù)指定條件對(duì)記錄進(jìn)行查詢或排序。【任務(wù)目標(biāo)】掌握使用SQL語(yǔ)句實(shí)現(xiàn)對(duì)數(shù)據(jù)表中記錄的查詢和排序等操作。【任務(wù)內(nèi)容】按指定要求完成輸出部分字段、查詢特定記錄、將所有記錄以某個(gè)字段為關(guān)鍵字排序、輸出指定記錄條數(shù)以及生成虛擬字段等相關(guān)操作?!救蝿?wù)分析】用于數(shù)據(jù)庫(kù)查詢的Select命令是最常用的SQL命令,它的基本語(yǔ)法格式為:Select<輸出項(xiàng)列表>From<表名>[Where<篩選條件>][OrderBy<排序關(guān)鍵字>[ASC|DESC]]1.SQL查詢語(yǔ)句中的通配符在SQL查詢語(yǔ)句中,除了前面看到的比較運(yùn)算符和邏輯運(yùn)算符之外,SQL語(yǔ)法也支持LIKE運(yùn)算符,并提供了四種通配符,其含義如下表:通配符功能說明%包含零個(gè)或更多字符的任意字符串_任何單個(gè)字符[]指定范圍(例如
[a-f])或集合(例如
[abcdef])內(nèi)的任何單個(gè)字符[^]不在指定范圍(例如
[^a-f])或集合(例如
[^abcdef])內(nèi)的任何單個(gè)字符2.SQL多表查詢?cè)谝粋€(gè)數(shù)據(jù)庫(kù)中往往不止一個(gè)數(shù)據(jù)表,客戶的資料通常分類存儲(chǔ)在多張數(shù)據(jù)表中,各表的關(guān)鍵字段相同,能夠使用該關(guān)鍵字段一并查詢或刪除多張表中的某條記錄的所有字段信息。這樣可以大大提高數(shù)據(jù)庫(kù)訪問的效率,同時(shí)也能減少數(shù)據(jù)庫(kù)備份時(shí)花費(fèi)的時(shí)間。下面我們來具體看一下如何在數(shù)據(jù)庫(kù)的兩張數(shù)據(jù)表中提取字段信息:在“Guest”的兩張數(shù)據(jù)表中查詢編號(hào)相同的記錄,將記錄的所有字段一并輸出。其SQL查詢命令為:Sql=“SelectInformation.*,Score.*FromInformationinnerjoinOn
Information.編號(hào)=Score.編號(hào)”9.7記錄的插入、更新和刪除操作對(duì)數(shù)據(jù)庫(kù)的操作除了前面講述的查詢和排序外,還有對(duì)數(shù)據(jù)庫(kù)中記錄的新增、更新和刪除,這些操作事實(shí)上都有兩種方式來完成。一是使用SQL語(yǔ)句的INSERT、DELETE、UPDATE指令來實(shí)現(xiàn);二是使用Recordset對(duì)象的AddNew、UpDate、Delete方法來實(shí)現(xiàn)。9.7記錄的插入、更新和刪除操作9.7.1記錄的插入9.7.2記錄的更新9.7.3記錄的刪除9.7.4表單與數(shù)據(jù)庫(kù)9.7.1記錄的插入【任務(wù)引入】在實(shí)際運(yùn)用中,我們會(huì)經(jīng)常需要向數(shù)據(jù)庫(kù)中追加記錄,下面我們就來學(xué)習(xí)如何向數(shù)據(jù)庫(kù)中增加一條記錄。【任務(wù)目標(biāo)】掌握使用SQL語(yǔ)句中的INSERT指令和Recordset對(duì)象的AddNew方法實(shí)現(xiàn)新增記錄操作?!救蝿?wù)內(nèi)容】向數(shù)據(jù)庫(kù)“db1.mdb”的“xinxi”表中,新增一條記錄?!救蝿?wù)分析】在數(shù)據(jù)表中由于存在關(guān)鍵字字段,所以必須保證關(guān)鍵字字段內(nèi)容不重復(fù)。然后才能運(yùn)用AddNew方法或INSERT指令實(shí)現(xiàn)記錄的追加操作。【結(jié)果示范】
【任務(wù)小結(jié)】①每次向數(shù)據(jù)庫(kù)中新增的記錄都處于數(shù)據(jù)表的最末尾。②使用Recordset對(duì)象的AddNew方法時(shí),先創(chuàng)建一個(gè)Recordset對(duì)象并調(diào)用該對(duì)象的AddNew方法添加一條空記錄,然后分別為該記錄的各個(gè)字段賦值,最后再調(diào)用Recordset對(duì)象的Update方法將所添加的記錄數(shù)據(jù)保存到指定數(shù)據(jù)表中。9.7.2記錄的更新【任務(wù)引入】在實(shí)際運(yùn)用中,數(shù)據(jù)庫(kù)中的記錄不可能是一成不變的,它隨時(shí)都可能會(huì)更新,下面我們就來學(xué)習(xí)如何更新數(shù)據(jù)庫(kù)中的記錄?!救蝿?wù)目標(biāo)】掌握使用SQL語(yǔ)句中的UPDATE指令和Recordset對(duì)象的Update方法實(shí)現(xiàn)更新記錄操作。【任務(wù)內(nèi)容】按要求更新數(shù)據(jù)庫(kù)中滿足條件的記錄部分或所有字段內(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對(duì)象的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對(duì)象的更新記錄方法對(duì)記錄進(jìn)行更新操作時(shí),若滿足條件的記錄有多條,此時(shí)應(yīng)使用Updatebatch方法對(duì)這些記錄做批處理。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鋼煙囪內(nèi)襯料噴涂施工方案
- 2025至2030年中國(guó)棒式磁性過濾器數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年中國(guó)皮帶采制樣系統(tǒng)市場(chǎng)調(diào)查研究報(bào)告
- 蘇州進(jìn)口環(huán)氧地坪施工方案
- 2025年中國(guó)萬事如意香市場(chǎng)調(diào)查研究報(bào)告
- 中山交通水上浮橋施工方案
- 2025屆高考語(yǔ)文背誦詩(shī)詞補(bǔ)充-《菩薩蠻·書江西造口壁》教學(xué)設(shè)計(jì)
- 2024-2025學(xué)年新教材高中歷史第二單元三國(guó)兩晉南北朝的民族交融與隋唐統(tǒng)一多民族封建國(guó)家的發(fā)展第6課從隋唐盛世到五代十國(guó)課后課時(shí)作業(yè)新人教版必修中外歷史綱要上
- 2024-2025高中物理專題三閉合電路歐姆定律的應(yīng)用講義+習(xí)題含解析新人教版選修3-1
- 2024-2025學(xué)年二年級(jí)數(shù)學(xué)上冊(cè)第三單元角的初步認(rèn)識(shí)第1課時(shí)角的初步認(rèn)識(shí)教案新人教版
- 家庭教育家長(zhǎng)會(huì)教案及反思(3篇模板)
- 人教版PEP英語(yǔ)單詞表三年級(jí)到六年級(jí)
- 職業(yè)培訓(xùn)師三級(jí)操作技能鑒定卷庫(kù)及答案
- 新疆烏魯木齊市2024年中考英語(yǔ)模擬試題(含答案)
- 【視頻號(hào)運(yùn)營(yíng)】視頻號(hào)運(yùn)營(yíng)108招
- 新能源客車安全應(yīng)急處理指南
- (正式版)JTT 421-2024 港口固定式起重機(jī)安全要求
- 地連墻施工MJS工法樁施工方案
- 《電力建設(shè)施工技術(shù)規(guī)范 第2部分:鍋爐機(jī)組》DLT 5190.2
- 實(shí)驗(yàn)室監(jiān)督人員培訓(xùn)
- 教案設(shè)計(jì)常見問題及解決措施
評(píng)論
0/150
提交評(píng)論