ADO數(shù)據(jù)訪問(wèn)接口培訓(xùn)教程課件_第1頁(yè)
ADO數(shù)據(jù)訪問(wèn)接口培訓(xùn)教程課件_第2頁(yè)
ADO數(shù)據(jù)訪問(wèn)接口培訓(xùn)教程課件_第3頁(yè)
ADO數(shù)據(jù)訪問(wèn)接口培訓(xùn)教程課件_第4頁(yè)
ADO數(shù)據(jù)訪問(wèn)接口培訓(xùn)教程課件_第5頁(yè)
已閱讀5頁(yè),還剩79頁(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)介

第6章

ADO數(shù)據(jù)訪問(wèn)接口6第6章ADO數(shù)據(jù)訪問(wèn)接口61內(nèi)容提要本章介紹ADO的基本概念,以及如何在ASP程序中使用ADO的對(duì)象。介紹ADO的對(duì)象Connection、RecordSet和Command的使用。介紹SQL語(yǔ)句的基本概念及如何利用SQL語(yǔ)句操作數(shù)據(jù)庫(kù)。并介紹訪問(wèn)數(shù)據(jù)庫(kù)的三個(gè)基本格式。內(nèi)容提要本章介紹ADO的基本概念,以及如何在ASP程序中使用2ADO數(shù)據(jù)訪問(wèn)接口概述

ADO常用的四種對(duì)象及其功能如下。(1)

連接對(duì)象(Connection):用來(lái)連接數(shù)據(jù)庫(kù)。(2)

記錄集對(duì)象(RecordSet):用來(lái)保存查詢語(yǔ)句返回的結(jié)果。(3)

命令對(duì)象(Command):用來(lái)執(zhí)行SQL(StructuredQueryLanguage)語(yǔ)句或者SQLServer的存儲(chǔ)過(guò)程。(4)

參數(shù)對(duì)象(Parameter):用來(lái)為存儲(chǔ)過(guò)程或查詢提供參數(shù)。下面介紹常用的連接對(duì)象(Connection)、記錄集對(duì)象(RecordSet)、命令對(duì)象(Command)。ADO數(shù)據(jù)訪問(wèn)接口概述ADO常用的四種對(duì)象及其功能如下。3Connection數(shù)據(jù)對(duì)象

與數(shù)據(jù)庫(kù)的所有通信都通過(guò)一個(gè)打開(kāi)的Connection對(duì)象進(jìn)行。對(duì)一個(gè)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的插入和讀取之前,必須先打開(kāi)數(shù)據(jù)庫(kù)的連接數(shù)據(jù)庫(kù)表是由行和列組成的一個(gè)二維表,當(dāng)使用ADO打開(kāi)數(shù)據(jù)庫(kù)的時(shí)候,會(huì)有一個(gè)指針指向某一行記錄,默認(rèn)的情況下該指針指向數(shù)據(jù)庫(kù)表的第一行。假定該指針叫“rs”,如果要訪問(wèn)數(shù)據(jù)庫(kù)表的字段,可以用圖6-1所示的方法。Connection數(shù)據(jù)對(duì)象與數(shù)據(jù)庫(kù)的所有通信都通過(guò)一個(gè)打4關(guān)系型數(shù)據(jù)庫(kù)表與指針

其中:寫(xiě)法rs(0)、rs(“學(xué)號(hào)”)、rs.Fields(0)和rs.Fields(“學(xué)號(hào)”)是相同的,寫(xiě)法rs(3)、rs(“語(yǔ)文”)、rs.Fields(3)和rs.Fields(“語(yǔ)文”)是相同的,其余類推。根據(jù)上表和注釋:rs(4).Name等價(jià)于rs.Fields(4).Name等價(jià)于"數(shù)學(xué)"rs(1).Name等價(jià)于rs.Fields(1).Name等價(jià)于"性別"假設(shè)當(dāng)前的指針指向第三行記錄,那么rs(2).Value等價(jià)于rs("姓名")等價(jià)于rs(2)等價(jià)于"小張"rs(4).Value等價(jià)于rs(4)等價(jià)于rs("數(shù)學(xué)")等價(jià)于60關(guān)系型數(shù)據(jù)庫(kù)表與指針其中:寫(xiě)法rs(0)、rs(“學(xué)號(hào)”)5打開(kāi)和關(guān)閉數(shù)據(jù)庫(kù)連接

要建立與一個(gè)數(shù)據(jù)庫(kù)的連接,首先創(chuàng)建Connection對(duì)象的一個(gè)實(shí)例,然后調(diào)用Connection對(duì)象的Open方法打開(kāi)一個(gè)連接通過(guò)程序6-01.asp輸出數(shù)據(jù)庫(kù)的表頭。

打開(kāi)和關(guān)閉數(shù)據(jù)庫(kù)連接要建立與一個(gè)數(shù)據(jù)庫(kù)的連接,首先創(chuàng)建Co6數(shù)據(jù)庫(kù)調(diào)用的基本格式格式一:數(shù)據(jù)庫(kù)調(diào)用的基本格式格式說(shuō)明:利用Execute方法執(zhí)行SQL語(yǔ)句

'第一步:建立Connection對(duì)象

setconn=Server.CreateObject("ADODB.Connection")'第二步:使用Connection對(duì)象的Open方法建立數(shù)據(jù)庫(kù)連接conn.Open("driver={MicrosoftAccessDriver(*.mdb)};dbq="&_ Server.MapPath("person.mdb"))'第三步:使用Connection對(duì)象的Execute方法執(zhí)行SQL語(yǔ)句'如果執(zhí)行查詢語(yǔ)句setrs=conn.Execute("數(shù)據(jù)查詢語(yǔ)句")'如果執(zhí)行數(shù)據(jù)操縱語(yǔ)句conn.Execute("數(shù)據(jù)操縱語(yǔ)句")數(shù)據(jù)庫(kù)調(diào)用的基本格式格式一:數(shù)據(jù)庫(kù)調(diào)用的基本格式7格式一的特點(diǎn)格式一的特點(diǎn)是:RecordSet對(duì)象的實(shí)例rs是利用Connection對(duì)象的Execute方法建立的,建立的rs對(duì)象的指針只能向后,不能向前移動(dòng)。第一步建立了Connection對(duì)象的一個(gè)實(shí)例,第二步利用Open方法和用Access數(shù)據(jù)驅(qū)動(dòng)程序打開(kāi)服務(wù)器上的某個(gè)Access數(shù)據(jù)庫(kù),第三步執(zhí)行SQL語(yǔ)句。

格式一的特點(diǎn)格式一的特點(diǎn)是:RecordSet對(duì)象的實(shí)例rs8Connection對(duì)象

參數(shù)說(shuō)明用法DsnODBC數(shù)據(jù)源的名稱Dsn="ODBC名稱"User數(shù)據(jù)庫(kù)登錄的用戶名User="DatabaseUser"Password數(shù)據(jù)庫(kù)登錄的密碼Password="UserPassword"Driver數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序的類型Access用Access的驅(qū)動(dòng),其他數(shù)據(jù)數(shù)據(jù)庫(kù)用其他驅(qū)動(dòng)。Dbq數(shù)據(jù)庫(kù)的物理路徑Dbq="C:\accdb.mdb"Provider數(shù)據(jù)提供者Provider="Microsoft.Jet.OLEDB.4.0"Connection對(duì)象參數(shù)說(shuō)明用法DsnODBC數(shù)據(jù)源的9其他類型的數(shù)據(jù)庫(kù)連接

連接的數(shù)據(jù)庫(kù)說(shuō)明OracleDriver={MicrosoftODBCforOracle};Server=服務(wù)器地址;User=;Password=SQLServerServer=服務(wù)器地址;Database=數(shù)據(jù)庫(kù)名;uid=用戶名;pwd=''ExcelDriver={MicrosoftExcelDriver(*.xls)};Dbq=Excel文件的物理路徑文本文件Driver={MicrosoftTextDriver(*.txt;*.csv)};DefaultDir=文件的物理路徑其他類型的數(shù)據(jù)庫(kù)連接連接的數(shù)據(jù)庫(kù)說(shuō)明OracleDrive10Connection對(duì)象的方法和屬性

方法名稱說(shuō)明用法Open()建立連接Conn.Open("數(shù)據(jù)庫(kù)連接串")Close()關(guān)閉與數(shù)據(jù)庫(kù)連接Conn.Close()Execute()執(zhí)行數(shù)據(jù)庫(kù)查詢Conn.Execute(SQL語(yǔ)句或者表名)BeginTrans()開(kāi)始事務(wù)處理Conn.BeginTrans()CommitTrans()提交事務(wù)處理Conn.CommitTrans()RollbackTrans()取消事務(wù)處理Conn.RollbackTRans()Connection對(duì)象的方法和屬性方法名稱說(shuō)明用法Ope11Connection對(duì)象的屬性

屬性名稱說(shuō)明用法CommandTimeoutExecute方法最長(zhǎng)執(zhí)行時(shí)間默認(rèn)值為30秒鐘,可以修改ConnectionTimeoutOpen方法最長(zhǎng)執(zhí)行時(shí)間默認(rèn)值為15秒,可以修改ConnectionString數(shù)據(jù)庫(kù)的連接串可以將連接串賦值給該屬性Mode用來(lái)設(shè)置操作權(quán)限1為只讀、2為只寫(xiě)、3為可讀可寫(xiě)Version獲取ADO的版本信息Conn.VersionConnection對(duì)象的屬性屬性名稱說(shuō)明用法Comman12向?yàn)g覽器輸出數(shù)據(jù)庫(kù)內(nèi)容

向?yàn)g覽器輸出了表頭后,可以利用RecordSet記錄集返回?cái)?shù)據(jù)庫(kù)表中的數(shù)據(jù),如程序6-02.asp所示。

向?yàn)g覽器輸出數(shù)據(jù)庫(kù)內(nèi)容向?yàn)g覽器輸出了表頭后,可以利用Rec13

輸出表中所有數(shù)據(jù)

用一個(gè)循環(huán)輸出數(shù)據(jù)庫(kù)中所有的數(shù)據(jù)。當(dāng)數(shù)據(jù)庫(kù)打開(kāi)時(shí),rs對(duì)象定位在數(shù)據(jù)庫(kù)表的第一條記錄上,輸出第一條記錄的內(nèi)容;要想輸出第二條記錄,必須執(zhí)行rs.MoveNext()指令,讓它移動(dòng)到下一條記錄。rs.BOF(BeginOfFile,文件開(kāi)頭)和rs.EOF(EndOfFile,文件結(jié)尾)這兩條指令判斷記錄指針是否移動(dòng)最前面和最后面,BOF的位置是在第一條記錄之前,EOF是在最后一條記錄之后。如果rs指針在最后一條記錄上,再執(zhí)行一次MoveNext()時(shí)則rs.EOF為真。如果rs.EOF或者rs.BOF為真,這時(shí)讀取數(shù)據(jù)會(huì)出錯(cuò)。

輸出表中所有數(shù)據(jù)用一個(gè)循環(huán)輸出數(shù)據(jù)庫(kù)中所有的數(shù)據(jù)。當(dāng)數(shù)據(jù)14數(shù)據(jù)庫(kù)表的結(jié)構(gòu)

數(shù)據(jù)庫(kù)表的結(jié)構(gòu)15使用事務(wù)

事務(wù)在實(shí)際編程中使用比較頻繁。事務(wù)典型的特征是:事務(wù)中一般包含幾個(gè)事件,只有幾個(gè)事件同時(shí)執(zhí)行成功,整個(gè)事務(wù)才被執(zhí)行,否則事務(wù)中的事件將不被執(zhí)行。比如:在ATM機(jī)上取200元,需要執(zhí)行兩個(gè)操作,1、從銀行賬戶上減去200;2、ATM機(jī)將錢返給用戶。這兩個(gè)事件將構(gòu)成事務(wù)。在實(shí)際編程中,需要同時(shí)成功,同時(shí)失敗。使用方法如程序6-05.asp所示。

使用事務(wù)事務(wù)在實(shí)際編程中使用比較頻繁。事務(wù)典型的特征是:事16Connection對(duì)象中的Errors集合

Error對(duì)象是Connection對(duì)象的子對(duì)象。數(shù)據(jù)庫(kù)程序運(yùn)行的時(shí)候,一個(gè)錯(cuò)誤就是一個(gè)Error對(duì)象,所有的Error對(duì)象就組成了Errors集合,又稱為錯(cuò)誤集合??梢岳肊rrors集合的Count屬性來(lái)判斷是否有錯(cuò)誤發(fā)生,還可以提取出錯(cuò)誤的描述,最后根據(jù)錯(cuò)誤的類型,給出相應(yīng)的解決措施。Errors對(duì)象提供一些屬性來(lái)得到錯(cuò)誤信息

Connection對(duì)象中的Errors集合Error對(duì)象17Error對(duì)象的屬性

參數(shù)說(shuō)明用法Number錯(cuò)誤編號(hào)Err.NumberDescription錯(cuò)誤描述Err.DescriptionSource發(fā)生錯(cuò)誤的原因Err.SourceHelpContext錯(cuò)誤的提示文字Err.HelpContextHelpFile錯(cuò)誤的提示文件Err.HelpFileNativeError數(shù)據(jù)庫(kù)服務(wù)器產(chǎn)生的錯(cuò)誤Err.NativeErrorError對(duì)象的屬性參數(shù)說(shuō)明用法Number錯(cuò)誤編號(hào)Err18RecordSet數(shù)據(jù)對(duì)象

記錄集可以用來(lái)代替表中的記錄。一個(gè)記錄集包含一條或多條記錄(行),每條記錄包括一個(gè)或多個(gè)域(字段)。在任何時(shí)刻,只有一條記錄是當(dāng)前記錄。創(chuàng)建記錄集對(duì)象的一個(gè)實(shí)例,可以使用Connection對(duì)象的Execute()方法,用Execute()創(chuàng)建的記錄集指針只能向下,而不能向上移動(dòng),即不能執(zhí)行MoveFirst()和MovePrevious()指令。

RecordSet數(shù)據(jù)對(duì)象記錄集可以用來(lái)代替表中的記錄。一19RecordSet對(duì)象的屬性及方法

利用RecordSet對(duì)象的屬性和方法可以完全操作一個(gè)數(shù)據(jù)庫(kù),理論上只要SQL語(yǔ)句可以完成的操作利用RecordSet對(duì)象都可以實(shí)現(xiàn)。RecordSet對(duì)象的屬性和方法很多,常用的方法如表6-6所示。

RecordSet對(duì)象的屬性及方法利用RecordSet對(duì)20RecordSet對(duì)象的方法

方法說(shuō)明用法Open()打開(kāi)記錄集rs.Open()Close()關(guān)閉記錄集rs.Close()Requery重新打開(kāi)記錄集rs.Requery()Move()當(dāng)前記錄前后移動(dòng)條數(shù)rs.Move(4)向后面移動(dòng)4行MoveFirst()移動(dòng)到第一條記錄rs.MoveFirst()MoveNext()移動(dòng)到下一條記錄rs.MoveNext()MovePrevious()移動(dòng)到記錄集中的上一條記錄rs.MovePrevious()MoveLast()移動(dòng)到記錄集的最后一條記錄rs.MoveLast()AddNew()向記錄集中添加一條新記錄rs.AddNew()Delete()從記錄集中刪除當(dāng)前記錄rs.Delete()Update()保存對(duì)當(dāng)前記錄所做的修改rs.Update()UpdateBatch()保存對(duì)一個(gè)或多個(gè)記錄的修改rs.UpdateBatch()CancelBatch()取消一批更新rs.CancelBatch()RecordSet對(duì)象的方法方法說(shuō)明用法Open()打開(kāi)記21RecordSet對(duì)象的屬性

屬性說(shuō)明用法ActiveConnection當(dāng)前記錄集用的數(shù)據(jù)連接rs.ActiveConnection=connRecordCounts記錄集的總數(shù)rs.RecordCountsBOF記錄集的開(kāi)頭rs.BOFEOF記錄集的結(jié)尾rs.EOFPageCount返回記錄集中的邏輯頁(yè)數(shù)rs.PageCountPageSize返回邏輯頁(yè)中的記錄個(gè)數(shù)rs.PageSize默認(rèn)值是10AbsolutePage指定當(dāng)前的頁(yè)rs.AbsolutePageAbsolutePosition指定當(dāng)前的記錄rs.AbsolutePositionRecordSet對(duì)象的屬性屬性說(shuō)明用法ActiveCon22使用RecordSet對(duì)象打開(kāi)數(shù)據(jù)庫(kù)

格式二:數(shù)據(jù)庫(kù)調(diào)用的基本格式格式說(shuō)明:利用RecordSet對(duì)象打開(kāi)數(shù)據(jù)庫(kù)表

'第一步:建立Connection對(duì)象setconn=Server.CreateObject("ADODB.Connection")'第二步:使用Connection對(duì)象的Open方法建立數(shù)據(jù)庫(kù)鏈接conn.Open("driver={MicrosoftAccessDriver(*.mdb)};dbq="&_Server.MapPath("Access數(shù)據(jù)庫(kù)"))'第三步:建立RecordSet對(duì)象setrs=Server.CreateObject("ADODB.Recordset")'第四步:利用RecordSet對(duì)象的Open方法打開(kāi)數(shù)據(jù)庫(kù)rs.Open"SQL語(yǔ)句",conn,打開(kāi)方式,鎖定類型使用RecordSet對(duì)象打開(kāi)數(shù)據(jù)庫(kù)格式二:數(shù)據(jù)庫(kù)調(diào)用的基23打開(kāi)類型的四個(gè)參數(shù):

(1)adOpenFowardOnly:對(duì)應(yīng)的數(shù)字是0(默認(rèn)值),記錄集只能向前移動(dòng)。這些參數(shù)對(duì)應(yīng)的數(shù)字,都保存在系統(tǒng)文件Adovbs.inc中。(2)adOpenKeyset:對(duì)應(yīng)的數(shù)字是1,記錄集可以向前或向后移動(dòng)。如果另一個(gè)用戶刪除或改變一條記錄,記錄集中將反映這個(gè)變化。但是,如果另一個(gè)用戶添加一條新記錄,新記錄不會(huì)出現(xiàn)在記錄集中。(3)adOpenDynamic:對(duì)應(yīng)的數(shù)字是2,使用動(dòng)態(tài)游標(biāo),可以在記錄集中向前或向后移動(dòng)。其他用戶造成的記錄的任何變化都將在記錄集中有所反映。(4)adOpenStatic。對(duì)應(yīng)的數(shù)字是3,使用靜態(tài)游標(biāo),可以在記錄集中向前或向后移動(dòng)。但是,靜態(tài)游標(biāo)不會(huì)對(duì)其他用戶造成的記錄變化有所反映。打開(kāi)類型的四個(gè)參數(shù):(1)adOpenFowardOnly24鎖定類型的參數(shù)如下

(1)adLockReadOnly:只讀鎖定,對(duì)應(yīng)的數(shù)字是1(默認(rèn)值),不能修改記錄集中的記錄。(2)adLockPessimistic:悲觀鎖定,對(duì)應(yīng)的數(shù)字是2,指定在編輯一個(gè)記錄時(shí),立即鎖定它。進(jìn)入鎖定

rs("數(shù)學(xué)")=rs("數(shù)學(xué)")+100

rs("語(yǔ)文")=rs("語(yǔ)文")+100

rs.Update() 解除鎖定鎖定類型的參數(shù)如下(1)adLockReadOnly:只讀25鎖定類型的參數(shù)

(3)adLockOptimistic:樂(lè)觀鎖定,對(duì)應(yīng)的數(shù)字是3,指定只有調(diào)用記錄集的Update方法時(shí),才鎖定記錄。

rs("數(shù)學(xué)")=rs("數(shù)學(xué)")+100

rs("語(yǔ)文")=rs("語(yǔ)文")+100進(jìn)入鎖定

rs.Update() 解除鎖定(4)adLockBatchOptimistic:批次樂(lè)觀鎖定,對(duì)應(yīng)的數(shù)字是4,指定記錄只能成批地更新。

ForI=1to10 rs("語(yǔ)文")=rs("語(yǔ)文")+100

rs("數(shù)學(xué)")=rs("數(shù)學(xué)")+100

rs.MoveNext() Next進(jìn)入鎖定

rs.UpdateBatch() 解除鎖定鎖定類型的參數(shù)(3)adLockOptimistic:樂(lè)觀26RecordSet當(dāng)數(shù)據(jù)庫(kù)第一次打開(kāi)時(shí),RecordSet指針定位在第一條記錄上,可以利用AbsolutePosition直接定位到某條記錄上,基本的語(yǔ)法是:AbsolutePosition=N,如程序6-07.asp文件所示。

RecordSet當(dāng)數(shù)據(jù)庫(kù)第一次打開(kāi)時(shí),RecordSet指27AbsolutePage還有一個(gè)屬性是AbsolutePage,當(dāng)調(diào)用AbsolutePage時(shí),系統(tǒng)將對(duì)數(shù)據(jù)記錄進(jìn)行分頁(yè),默認(rèn)每頁(yè)為10條記錄,AbsolutePage為幾,記錄指針就自動(dòng)定位到第幾頁(yè)的第一條記錄上。比如說(shuō),AbsolutePage=3,則記錄指針就自動(dòng)定位到第21條記錄上去了,此時(shí)AbsolutePosition=21。計(jì)算公式為:AbsolutePosition=(Absolute1)*PageSize,PageSize默認(rèn)是10,也可以設(shè)置為其他的值。使用方法如程序6-08.asp所示

AbsolutePage還有一個(gè)屬性是AbsolutePag28實(shí)現(xiàn)數(shù)據(jù)庫(kù)的分頁(yè)顯示

數(shù)據(jù)庫(kù)中可能有成千上萬(wàn)條記錄,如果一次都顯示出來(lái)的話消耗的時(shí)間太多。下面通過(guò)一個(gè)案例分成六個(gè)版本實(shí)現(xiàn)數(shù)據(jù)庫(kù)的分頁(yè)顯示。

實(shí)現(xiàn)數(shù)據(jù)庫(kù)的分頁(yè)顯示數(shù)據(jù)庫(kù)中可能有成千上萬(wàn)條記錄,如果一次29案例6-1分頁(yè)顯示首先利用格式二將數(shù)據(jù)庫(kù)表中某頁(yè)的所有記錄輸出,如程序pageV1.asp所示。在程序中加上翻頁(yè)的超級(jí)鏈接就可以實(shí)現(xiàn)翻頁(yè),如程序pageV2.asp所示??梢岳肞ageCount屬性得到總頁(yè)數(shù),修正這些可能出現(xiàn)的錯(cuò)誤,得到版本三。如程序pageV3.asp所示。加入超級(jí)鏈接的版本四如程序pageV4.asp所示,將姓名一列加上超級(jí)鏈接。

偶數(shù)行和奇數(shù)行可顯示不同的背景顏色。版本五將實(shí)現(xiàn)這些功能,如程序pageV5.asp所示。

案例6-1分頁(yè)顯示首先利用格式二將數(shù)據(jù)庫(kù)表中某頁(yè)的所有記錄30Command數(shù)據(jù)對(duì)象

Command對(duì)象又稱為命令對(duì)象,可以執(zhí)行SQL語(yǔ)句和執(zhí)行SQLServer的存儲(chǔ)過(guò)程。通過(guò)傳遞SQL指令對(duì)數(shù)據(jù)庫(kù)提出操作要求,把得到的結(jié)果返回給RecordSet對(duì)象。Command數(shù)據(jù)對(duì)象Command對(duì)象又稱為命令對(duì)象,可31Command對(duì)象的屬性和方法

屬性說(shuō)明用法ActiveConnection指定Command用的連接cmd.ActiveConnection=connCommandText指定數(shù)據(jù)庫(kù)查詢信息cmd.ActiveConnection=表名或SQLCommandType數(shù)據(jù)查詢的類型cmd.CommandType=1,2,4CommandTimeout執(zhí)行SQL語(yǔ)句的最長(zhǎng)時(shí)間默認(rèn)為30秒Prepared是否預(yù)編譯,可以加快速度cmd.Parpared=True/FalseCommand對(duì)象的屬性和方法屬性說(shuō)明用法ActiveCo32Command對(duì)象提供的方法

方法說(shuō)明用法Execute()執(zhí)行SQL語(yǔ)句、表名或者存儲(chǔ)過(guò)程cmd.Execute()CreateParameter()創(chuàng)建Command對(duì)象的參數(shù)cmd.CreateParameter()Command對(duì)象提供的方法方法說(shuō)明用法Execute()33格式三格式三:數(shù)據(jù)庫(kù)調(diào)用的基本格式格式說(shuō)明:利用Command對(duì)象的Execute方法建立RecordSet對(duì)象

'第一步:建立Connection對(duì)象setconn=Server.CreateObject("ADODB.Connection")'第二步:使用Connection對(duì)象的Open方法建立數(shù)據(jù)庫(kù)連接conn.Open("driver={MicrosoftAccessDriver(*.mdb)};dbq="+Server.MapPath("Access數(shù)據(jù)庫(kù)"))'第三步:建立Command對(duì)象cmd=Server.CreateObject("ADODB.Command")cmd.ActiveConnection=conncmd.CommandText=sql'第四步:使用Command對(duì)象的Execute方法執(zhí)行SQL語(yǔ)句'如果執(zhí)行查詢語(yǔ)句rs=cmd.Execute()'如果執(zhí)行數(shù)據(jù)操縱語(yǔ)句cmd.Execute()格式三格式三:數(shù)據(jù)庫(kù)調(diào)用的基本格式34使用Command對(duì)象使用Command對(duì)象來(lái)執(zhí)行SQL語(yǔ)句,如程序6-09.asp所示。

使用Command對(duì)象使用Command對(duì)象來(lái)執(zhí)行SQL語(yǔ)35例6-2分頁(yè)列表的刪除和修改

本案例實(shí)現(xiàn)的功能是:為案例6-1的分頁(yè)列表添加修改數(shù)據(jù)和刪除數(shù)據(jù)的功能。首先為列表添加兩列:修改和刪除。顯示的主頁(yè)面如圖6-16所示。例6-2分頁(yè)列表的刪除和修改本案例實(shí)現(xiàn)的功能是:為案例636案例6-3分頁(yè)版本的留言簿這里再對(duì)留言簿作一次升級(jí),在案例5-2的基礎(chǔ)上加入分頁(yè)功能。只要更改display.asp文件就可以。案例6-3分頁(yè)版本的留言簿這里再對(duì)留言簿作一次升級(jí),在案例37小結(jié)本章重點(diǎn)理解訪問(wèn)數(shù)據(jù)庫(kù)的三大基本格式及各自的特點(diǎn)。掌握Connection,RecordSet和Command對(duì)象的使用方法。熟練掌握利用格式二實(shí)現(xiàn)數(shù)據(jù)庫(kù)的分頁(yè)顯示和利用SQL語(yǔ)句操作數(shù)據(jù)庫(kù)的方法。小結(jié)本章重點(diǎn)理解訪問(wèn)數(shù)據(jù)庫(kù)的三大基本格式及各自的特點(diǎn)。掌握C38本章習(xí)題一、選擇題1.可以使用ADO來(lái)訪問(wèn)的數(shù)據(jù)庫(kù)是___________。A)MicrosoftAccessB)MicrosoftSQLServerC)OracleD)以上都可以2.命令對(duì)象(Command):用來(lái)執(zhí)行___________。A)SQL語(yǔ)句

B)SQLServer的存儲(chǔ)過(guò)程C)連接數(shù)據(jù)庫(kù)

D)返回記錄集3.語(yǔ)句rs.Fields.Count

返回的值是___________。A)記錄集的行數(shù)

B)記錄集的列數(shù)C)記錄集的行數(shù)+1D)記錄集的列數(shù)-14.使用BeginTrans()___________,利用CommitTrans()___________,如果有錯(cuò)誤發(fā)生,利用RollbackTrans()來(lái)___________。A)提交一個(gè)事務(wù)

B)總結(jié)事務(wù)C)開(kāi)始一個(gè)事務(wù)

D)取消事務(wù)5.可以利用Errors集合的___________來(lái)判斷是否有錯(cuò)誤發(fā)生A)Number屬性

B)Description屬性C)Count屬性

D)Source屬性本章習(xí)題一、選擇題39二、填空題1.當(dāng)執(zhí)行事務(wù)的時(shí)候,如果沒(méi)有錯(cuò)誤發(fā)生,則conn.Errors.Cout將為_(kāi)__________。2.創(chuàng)建記錄集對(duì)象的一個(gè)實(shí)例,可以使用___________,這種方法創(chuàng)建的記錄集指針只能向下,而不能向上移動(dòng),即不能執(zhí)行MoveFirst()和MovePrevious()指令。3.判斷記錄集合是否到表的最后,

利用語(yǔ)句___________。二、填空題1.當(dāng)執(zhí)行事務(wù)的時(shí)候,如果沒(méi)有錯(cuò)誤發(fā)生,則con40三、簡(jiǎn)答題與程序設(shè)計(jì)題1.簡(jiǎn)述ADO的功能及常用的三大對(duì)象的用途。2.訪問(wèn)數(shù)據(jù)庫(kù)格式一有什么特點(diǎn)?可以執(zhí)行哪些SQL語(yǔ)句?3.如何實(shí)現(xiàn)模糊查詢?4.如何用變量替換SQL語(yǔ)句的值?5.格式二的數(shù)據(jù)打開(kāi)方式和鎖定方式有幾種?各有什么含義?6.比較訪問(wèn)數(shù)據(jù)庫(kù)的三個(gè)基本格式的異同。三、簡(jiǎn)答題與程序設(shè)計(jì)題41演講完畢,謝謝觀看!演講完畢,謝謝觀看!42第6章

ADO數(shù)據(jù)訪問(wèn)接口6第6章ADO數(shù)據(jù)訪問(wèn)接口643內(nèi)容提要本章介紹ADO的基本概念,以及如何在ASP程序中使用ADO的對(duì)象。介紹ADO的對(duì)象Connection、RecordSet和Command的使用。介紹SQL語(yǔ)句的基本概念及如何利用SQL語(yǔ)句操作數(shù)據(jù)庫(kù)。并介紹訪問(wèn)數(shù)據(jù)庫(kù)的三個(gè)基本格式。內(nèi)容提要本章介紹ADO的基本概念,以及如何在ASP程序中使用44ADO數(shù)據(jù)訪問(wèn)接口概述

ADO常用的四種對(duì)象及其功能如下。(1)

連接對(duì)象(Connection):用來(lái)連接數(shù)據(jù)庫(kù)。(2)

記錄集對(duì)象(RecordSet):用來(lái)保存查詢語(yǔ)句返回的結(jié)果。(3)

命令對(duì)象(Command):用來(lái)執(zhí)行SQL(StructuredQueryLanguage)語(yǔ)句或者SQLServer的存儲(chǔ)過(guò)程。(4)

參數(shù)對(duì)象(Parameter):用來(lái)為存儲(chǔ)過(guò)程或查詢提供參數(shù)。下面介紹常用的連接對(duì)象(Connection)、記錄集對(duì)象(RecordSet)、命令對(duì)象(Command)。ADO數(shù)據(jù)訪問(wèn)接口概述ADO常用的四種對(duì)象及其功能如下。45Connection數(shù)據(jù)對(duì)象

與數(shù)據(jù)庫(kù)的所有通信都通過(guò)一個(gè)打開(kāi)的Connection對(duì)象進(jìn)行。對(duì)一個(gè)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的插入和讀取之前,必須先打開(kāi)數(shù)據(jù)庫(kù)的連接數(shù)據(jù)庫(kù)表是由行和列組成的一個(gè)二維表,當(dāng)使用ADO打開(kāi)數(shù)據(jù)庫(kù)的時(shí)候,會(huì)有一個(gè)指針指向某一行記錄,默認(rèn)的情況下該指針指向數(shù)據(jù)庫(kù)表的第一行。假定該指針叫“rs”,如果要訪問(wèn)數(shù)據(jù)庫(kù)表的字段,可以用圖6-1所示的方法。Connection數(shù)據(jù)對(duì)象與數(shù)據(jù)庫(kù)的所有通信都通過(guò)一個(gè)打46關(guān)系型數(shù)據(jù)庫(kù)表與指針

其中:寫(xiě)法rs(0)、rs(“學(xué)號(hào)”)、rs.Fields(0)和rs.Fields(“學(xué)號(hào)”)是相同的,寫(xiě)法rs(3)、rs(“語(yǔ)文”)、rs.Fields(3)和rs.Fields(“語(yǔ)文”)是相同的,其余類推。根據(jù)上表和注釋:rs(4).Name等價(jià)于rs.Fields(4).Name等價(jià)于"數(shù)學(xué)"rs(1).Name等價(jià)于rs.Fields(1).Name等價(jià)于"性別"假設(shè)當(dāng)前的指針指向第三行記錄,那么rs(2).Value等價(jià)于rs("姓名")等價(jià)于rs(2)等價(jià)于"小張"rs(4).Value等價(jià)于rs(4)等價(jià)于rs("數(shù)學(xué)")等價(jià)于60關(guān)系型數(shù)據(jù)庫(kù)表與指針其中:寫(xiě)法rs(0)、rs(“學(xué)號(hào)”)47打開(kāi)和關(guān)閉數(shù)據(jù)庫(kù)連接

要建立與一個(gè)數(shù)據(jù)庫(kù)的連接,首先創(chuàng)建Connection對(duì)象的一個(gè)實(shí)例,然后調(diào)用Connection對(duì)象的Open方法打開(kāi)一個(gè)連接通過(guò)程序6-01.asp輸出數(shù)據(jù)庫(kù)的表頭。

打開(kāi)和關(guān)閉數(shù)據(jù)庫(kù)連接要建立與一個(gè)數(shù)據(jù)庫(kù)的連接,首先創(chuàng)建Co48數(shù)據(jù)庫(kù)調(diào)用的基本格式格式一:數(shù)據(jù)庫(kù)調(diào)用的基本格式格式說(shuō)明:利用Execute方法執(zhí)行SQL語(yǔ)句

'第一步:建立Connection對(duì)象

setconn=Server.CreateObject("ADODB.Connection")'第二步:使用Connection對(duì)象的Open方法建立數(shù)據(jù)庫(kù)連接conn.Open("driver={MicrosoftAccessDriver(*.mdb)};dbq="&_ Server.MapPath("person.mdb"))'第三步:使用Connection對(duì)象的Execute方法執(zhí)行SQL語(yǔ)句'如果執(zhí)行查詢語(yǔ)句setrs=conn.Execute("數(shù)據(jù)查詢語(yǔ)句")'如果執(zhí)行數(shù)據(jù)操縱語(yǔ)句conn.Execute("數(shù)據(jù)操縱語(yǔ)句")數(shù)據(jù)庫(kù)調(diào)用的基本格式格式一:數(shù)據(jù)庫(kù)調(diào)用的基本格式49格式一的特點(diǎn)格式一的特點(diǎn)是:RecordSet對(duì)象的實(shí)例rs是利用Connection對(duì)象的Execute方法建立的,建立的rs對(duì)象的指針只能向后,不能向前移動(dòng)。第一步建立了Connection對(duì)象的一個(gè)實(shí)例,第二步利用Open方法和用Access數(shù)據(jù)驅(qū)動(dòng)程序打開(kāi)服務(wù)器上的某個(gè)Access數(shù)據(jù)庫(kù),第三步執(zhí)行SQL語(yǔ)句。

格式一的特點(diǎn)格式一的特點(diǎn)是:RecordSet對(duì)象的實(shí)例rs50Connection對(duì)象

參數(shù)說(shuō)明用法DsnODBC數(shù)據(jù)源的名稱Dsn="ODBC名稱"User數(shù)據(jù)庫(kù)登錄的用戶名User="DatabaseUser"Password數(shù)據(jù)庫(kù)登錄的密碼Password="UserPassword"Driver數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序的類型Access用Access的驅(qū)動(dòng),其他數(shù)據(jù)數(shù)據(jù)庫(kù)用其他驅(qū)動(dòng)。Dbq數(shù)據(jù)庫(kù)的物理路徑Dbq="C:\accdb.mdb"Provider數(shù)據(jù)提供者Provider="Microsoft.Jet.OLEDB.4.0"Connection對(duì)象參數(shù)說(shuō)明用法DsnODBC數(shù)據(jù)源的51其他類型的數(shù)據(jù)庫(kù)連接

連接的數(shù)據(jù)庫(kù)說(shuō)明OracleDriver={MicrosoftODBCforOracle};Server=服務(wù)器地址;User=;Password=SQLServerServer=服務(wù)器地址;Database=數(shù)據(jù)庫(kù)名;uid=用戶名;pwd=''ExcelDriver={MicrosoftExcelDriver(*.xls)};Dbq=Excel文件的物理路徑文本文件Driver={MicrosoftTextDriver(*.txt;*.csv)};DefaultDir=文件的物理路徑其他類型的數(shù)據(jù)庫(kù)連接連接的數(shù)據(jù)庫(kù)說(shuō)明OracleDrive52Connection對(duì)象的方法和屬性

方法名稱說(shuō)明用法Open()建立連接Conn.Open("數(shù)據(jù)庫(kù)連接串")Close()關(guān)閉與數(shù)據(jù)庫(kù)連接Conn.Close()Execute()執(zhí)行數(shù)據(jù)庫(kù)查詢Conn.Execute(SQL語(yǔ)句或者表名)BeginTrans()開(kāi)始事務(wù)處理Conn.BeginTrans()CommitTrans()提交事務(wù)處理Conn.CommitTrans()RollbackTrans()取消事務(wù)處理Conn.RollbackTRans()Connection對(duì)象的方法和屬性方法名稱說(shuō)明用法Ope53Connection對(duì)象的屬性

屬性名稱說(shuō)明用法CommandTimeoutExecute方法最長(zhǎng)執(zhí)行時(shí)間默認(rèn)值為30秒鐘,可以修改ConnectionTimeoutOpen方法最長(zhǎng)執(zhí)行時(shí)間默認(rèn)值為15秒,可以修改ConnectionString數(shù)據(jù)庫(kù)的連接串可以將連接串賦值給該屬性Mode用來(lái)設(shè)置操作權(quán)限1為只讀、2為只寫(xiě)、3為可讀可寫(xiě)Version獲取ADO的版本信息Conn.VersionConnection對(duì)象的屬性屬性名稱說(shuō)明用法Comman54向?yàn)g覽器輸出數(shù)據(jù)庫(kù)內(nèi)容

向?yàn)g覽器輸出了表頭后,可以利用RecordSet記錄集返回?cái)?shù)據(jù)庫(kù)表中的數(shù)據(jù),如程序6-02.asp所示。

向?yàn)g覽器輸出數(shù)據(jù)庫(kù)內(nèi)容向?yàn)g覽器輸出了表頭后,可以利用Rec55

輸出表中所有數(shù)據(jù)

用一個(gè)循環(huán)輸出數(shù)據(jù)庫(kù)中所有的數(shù)據(jù)。當(dāng)數(shù)據(jù)庫(kù)打開(kāi)時(shí),rs對(duì)象定位在數(shù)據(jù)庫(kù)表的第一條記錄上,輸出第一條記錄的內(nèi)容;要想輸出第二條記錄,必須執(zhí)行rs.MoveNext()指令,讓它移動(dòng)到下一條記錄。rs.BOF(BeginOfFile,文件開(kāi)頭)和rs.EOF(EndOfFile,文件結(jié)尾)這兩條指令判斷記錄指針是否移動(dòng)最前面和最后面,BOF的位置是在第一條記錄之前,EOF是在最后一條記錄之后。如果rs指針在最后一條記錄上,再執(zhí)行一次MoveNext()時(shí)則rs.EOF為真。如果rs.EOF或者rs.BOF為真,這時(shí)讀取數(shù)據(jù)會(huì)出錯(cuò)。

輸出表中所有數(shù)據(jù)用一個(gè)循環(huán)輸出數(shù)據(jù)庫(kù)中所有的數(shù)據(jù)。當(dāng)數(shù)據(jù)56數(shù)據(jù)庫(kù)表的結(jié)構(gòu)

數(shù)據(jù)庫(kù)表的結(jié)構(gòu)57使用事務(wù)

事務(wù)在實(shí)際編程中使用比較頻繁。事務(wù)典型的特征是:事務(wù)中一般包含幾個(gè)事件,只有幾個(gè)事件同時(shí)執(zhí)行成功,整個(gè)事務(wù)才被執(zhí)行,否則事務(wù)中的事件將不被執(zhí)行。比如:在ATM機(jī)上取200元,需要執(zhí)行兩個(gè)操作,1、從銀行賬戶上減去200;2、ATM機(jī)將錢返給用戶。這兩個(gè)事件將構(gòu)成事務(wù)。在實(shí)際編程中,需要同時(shí)成功,同時(shí)失敗。使用方法如程序6-05.asp所示。

使用事務(wù)事務(wù)在實(shí)際編程中使用比較頻繁。事務(wù)典型的特征是:事58Connection對(duì)象中的Errors集合

Error對(duì)象是Connection對(duì)象的子對(duì)象。數(shù)據(jù)庫(kù)程序運(yùn)行的時(shí)候,一個(gè)錯(cuò)誤就是一個(gè)Error對(duì)象,所有的Error對(duì)象就組成了Errors集合,又稱為錯(cuò)誤集合??梢岳肊rrors集合的Count屬性來(lái)判斷是否有錯(cuò)誤發(fā)生,還可以提取出錯(cuò)誤的描述,最后根據(jù)錯(cuò)誤的類型,給出相應(yīng)的解決措施。Errors對(duì)象提供一些屬性來(lái)得到錯(cuò)誤信息

Connection對(duì)象中的Errors集合Error對(duì)象59Error對(duì)象的屬性

參數(shù)說(shuō)明用法Number錯(cuò)誤編號(hào)Err.NumberDescription錯(cuò)誤描述Err.DescriptionSource發(fā)生錯(cuò)誤的原因Err.SourceHelpContext錯(cuò)誤的提示文字Err.HelpContextHelpFile錯(cuò)誤的提示文件Err.HelpFileNativeError數(shù)據(jù)庫(kù)服務(wù)器產(chǎn)生的錯(cuò)誤Err.NativeErrorError對(duì)象的屬性參數(shù)說(shuō)明用法Number錯(cuò)誤編號(hào)Err60RecordSet數(shù)據(jù)對(duì)象

記錄集可以用來(lái)代替表中的記錄。一個(gè)記錄集包含一條或多條記錄(行),每條記錄包括一個(gè)或多個(gè)域(字段)。在任何時(shí)刻,只有一條記錄是當(dāng)前記錄。創(chuàng)建記錄集對(duì)象的一個(gè)實(shí)例,可以使用Connection對(duì)象的Execute()方法,用Execute()創(chuàng)建的記錄集指針只能向下,而不能向上移動(dòng),即不能執(zhí)行MoveFirst()和MovePrevious()指令。

RecordSet數(shù)據(jù)對(duì)象記錄集可以用來(lái)代替表中的記錄。一61RecordSet對(duì)象的屬性及方法

利用RecordSet對(duì)象的屬性和方法可以完全操作一個(gè)數(shù)據(jù)庫(kù),理論上只要SQL語(yǔ)句可以完成的操作利用RecordSet對(duì)象都可以實(shí)現(xiàn)。RecordSet對(duì)象的屬性和方法很多,常用的方法如表6-6所示。

RecordSet對(duì)象的屬性及方法利用RecordSet對(duì)62RecordSet對(duì)象的方法

方法說(shuō)明用法Open()打開(kāi)記錄集rs.Open()Close()關(guān)閉記錄集rs.Close()Requery重新打開(kāi)記錄集rs.Requery()Move()當(dāng)前記錄前后移動(dòng)條數(shù)rs.Move(4)向后面移動(dòng)4行MoveFirst()移動(dòng)到第一條記錄rs.MoveFirst()MoveNext()移動(dòng)到下一條記錄rs.MoveNext()MovePrevious()移動(dòng)到記錄集中的上一條記錄rs.MovePrevious()MoveLast()移動(dòng)到記錄集的最后一條記錄rs.MoveLast()AddNew()向記錄集中添加一條新記錄rs.AddNew()Delete()從記錄集中刪除當(dāng)前記錄rs.Delete()Update()保存對(duì)當(dāng)前記錄所做的修改rs.Update()UpdateBatch()保存對(duì)一個(gè)或多個(gè)記錄的修改rs.UpdateBatch()CancelBatch()取消一批更新rs.CancelBatch()RecordSet對(duì)象的方法方法說(shuō)明用法Open()打開(kāi)記63RecordSet對(duì)象的屬性

屬性說(shuō)明用法ActiveConnection當(dāng)前記錄集用的數(shù)據(jù)連接rs.ActiveConnection=connRecordCounts記錄集的總數(shù)rs.RecordCountsBOF記錄集的開(kāi)頭rs.BOFEOF記錄集的結(jié)尾rs.EOFPageCount返回記錄集中的邏輯頁(yè)數(shù)rs.PageCountPageSize返回邏輯頁(yè)中的記錄個(gè)數(shù)rs.PageSize默認(rèn)值是10AbsolutePage指定當(dāng)前的頁(yè)rs.AbsolutePageAbsolutePosition指定當(dāng)前的記錄rs.AbsolutePositionRecordSet對(duì)象的屬性屬性說(shuō)明用法ActiveCon64使用RecordSet對(duì)象打開(kāi)數(shù)據(jù)庫(kù)

格式二:數(shù)據(jù)庫(kù)調(diào)用的基本格式格式說(shuō)明:利用RecordSet對(duì)象打開(kāi)數(shù)據(jù)庫(kù)表

'第一步:建立Connection對(duì)象setconn=Server.CreateObject("ADODB.Connection")'第二步:使用Connection對(duì)象的Open方法建立數(shù)據(jù)庫(kù)鏈接conn.Open("driver={MicrosoftAccessDriver(*.mdb)};dbq="&_Server.MapPath("Access數(shù)據(jù)庫(kù)"))'第三步:建立RecordSet對(duì)象setrs=Server.CreateObject("ADODB.Recordset")'第四步:利用RecordSet對(duì)象的Open方法打開(kāi)數(shù)據(jù)庫(kù)rs.Open"SQL語(yǔ)句",conn,打開(kāi)方式,鎖定類型使用RecordSet對(duì)象打開(kāi)數(shù)據(jù)庫(kù)格式二:數(shù)據(jù)庫(kù)調(diào)用的基65打開(kāi)類型的四個(gè)參數(shù):

(1)adOpenFowardOnly:對(duì)應(yīng)的數(shù)字是0(默認(rèn)值),記錄集只能向前移動(dòng)。這些參數(shù)對(duì)應(yīng)的數(shù)字,都保存在系統(tǒng)文件Adovbs.inc中。(2)adOpenKeyset:對(duì)應(yīng)的數(shù)字是1,記錄集可以向前或向后移動(dòng)。如果另一個(gè)用戶刪除或改變一條記錄,記錄集中將反映這個(gè)變化。但是,如果另一個(gè)用戶添加一條新記錄,新記錄不會(huì)出現(xiàn)在記錄集中。(3)adOpenDynamic:對(duì)應(yīng)的數(shù)字是2,使用動(dòng)態(tài)游標(biāo),可以在記錄集中向前或向后移動(dòng)。其他用戶造成的記錄的任何變化都將在記錄集中有所反映。(4)adOpenStatic。對(duì)應(yīng)的數(shù)字是3,使用靜態(tài)游標(biāo),可以在記錄集中向前或向后移動(dòng)。但是,靜態(tài)游標(biāo)不會(huì)對(duì)其他用戶造成的記錄變化有所反映。打開(kāi)類型的四個(gè)參數(shù):(1)adOpenFowardOnly66鎖定類型的參數(shù)如下

(1)adLockReadOnly:只讀鎖定,對(duì)應(yīng)的數(shù)字是1(默認(rèn)值),不能修改記錄集中的記錄。(2)adLockPessimistic:悲觀鎖定,對(duì)應(yīng)的數(shù)字是2,指定在編輯一個(gè)記錄時(shí),立即鎖定它。進(jìn)入鎖定

rs("數(shù)學(xué)")=rs("數(shù)學(xué)")+100

rs("語(yǔ)文")=rs("語(yǔ)文")+100

rs.Update() 解除鎖定鎖定類型的參數(shù)如下(1)adLockReadOnly:只讀67鎖定類型的參數(shù)

(3)adLockOptimistic:樂(lè)觀鎖定,對(duì)應(yīng)的數(shù)字是3,指定只有調(diào)用記錄集的Update方法時(shí),才鎖定記錄。

rs("數(shù)學(xué)")=rs("數(shù)學(xué)")+100

rs("語(yǔ)文")=rs("語(yǔ)文")+100進(jìn)入鎖定

rs.Update() 解除鎖定(4)adLockBatchOptimistic:批次樂(lè)觀鎖定,對(duì)應(yīng)的數(shù)字是4,指定記錄只能成批地更新。

ForI=1to10 rs("語(yǔ)文")=rs("語(yǔ)文")+100

rs("數(shù)學(xué)")=rs("數(shù)學(xué)")+100

rs.MoveNext() Next進(jìn)入鎖定

rs.UpdateBatch() 解除鎖定鎖定類型的參數(shù)(3)adLockOptimistic:樂(lè)觀68RecordSet當(dāng)數(shù)據(jù)庫(kù)第一次打開(kāi)時(shí),RecordSet指針定位在第一條記錄上,可以利用AbsolutePosition直接定位到某條記錄上,基本的語(yǔ)法是:AbsolutePosition=N,如程序6-07.asp文件所示。

RecordSet當(dāng)數(shù)據(jù)庫(kù)第一次打開(kāi)時(shí),RecordSet指69AbsolutePage還有一個(gè)屬性是AbsolutePage,當(dāng)調(diào)用AbsolutePage時(shí),系統(tǒng)將對(duì)數(shù)據(jù)記錄進(jìn)行分頁(yè),默認(rèn)每頁(yè)為10條記錄,AbsolutePage為幾,記錄指針就自動(dòng)定位到第幾頁(yè)的第一條記錄上。比如說(shuō),AbsolutePage=3,則記錄指針就自動(dòng)定位到第21條記錄上去了,此時(shí)AbsolutePosition=21。計(jì)算公式為:AbsolutePosition=(Absolute1)*PageSize,PageSize默認(rèn)是10,也可以設(shè)置為其他的值。使用方法如程序6-08.asp所示

AbsolutePage還有一個(gè)屬性是AbsolutePag70實(shí)現(xiàn)數(shù)據(jù)庫(kù)的分頁(yè)顯示

數(shù)據(jù)庫(kù)中可能有成千上萬(wàn)條記錄,如果一次都顯示出來(lái)的話消耗的時(shí)間太多。下面通過(guò)一個(gè)案例分成六個(gè)版本實(shí)現(xiàn)數(shù)據(jù)庫(kù)的分頁(yè)顯示。

實(shí)現(xiàn)數(shù)據(jù)庫(kù)的分頁(yè)顯示數(shù)據(jù)庫(kù)中可能有成千上萬(wàn)條記錄,如果一次71案例6-1分頁(yè)顯示首先利用格式二將數(shù)據(jù)庫(kù)表中某頁(yè)的所有記錄輸出,如程序pageV1.asp所示。在程序中加上翻頁(yè)的超級(jí)鏈接就可以實(shí)現(xiàn)翻頁(yè),如程序pageV2.asp所示??梢岳肞ageCount屬性得到總頁(yè)數(shù),修正這些可能出現(xiàn)的錯(cuò)誤,得到版本三。如程序pageV3.asp所示。加入超級(jí)鏈接的版本四如程序pageV4.asp所示,將姓名一列加上超級(jí)鏈接。

偶數(shù)行和奇數(shù)行可顯示不同的背景顏色。版本五將實(shí)現(xiàn)這些功能,如程序pageV5.asp所示。

案例6-1分頁(yè)顯示首先利用格式二將數(shù)據(jù)庫(kù)表中某頁(yè)的所有記錄72Command數(shù)據(jù)對(duì)象

Command對(duì)象又稱為命令對(duì)象,可以執(zhí)行SQL語(yǔ)句和執(zhí)行SQLServer的存儲(chǔ)過(guò)程。通過(guò)傳遞SQL指令對(duì)數(shù)據(jù)庫(kù)提出操作要求,把得到的結(jié)果返回給RecordSet對(duì)象。Command數(shù)據(jù)對(duì)象Command對(duì)象又稱為命令對(duì)象,可73Command對(duì)象的屬性和方法

屬性說(shuō)明用法ActiveConnection指定Command用的連接cmd.ActiveConnection=connCommandText指定數(shù)據(jù)庫(kù)查詢信息cmd.ActiveConnection=表名或SQLCommandType數(shù)據(jù)查詢的類型cmd.CommandType=1,2,4CommandTimeout執(zhí)行SQL語(yǔ)句的最長(zhǎng)時(shí)間默認(rèn)為30秒Prepared是否預(yù)編譯,可以加快速度cmd.Parpared=True/FalseCommand對(duì)象的屬性和方法屬性說(shuō)明用法ActiveCo74Command對(duì)象提供的方法

方法說(shuō)明用法Execute()執(zhí)行SQL語(yǔ)句、表名或者存儲(chǔ)過(guò)程cmd.Execute()CreateParameter()創(chuàng)建Command對(duì)象的參數(shù)cmd.CreateParameter()Command對(duì)象提供的方法方法說(shuō)明用法Execute()75格式三格式三:數(shù)據(jù)庫(kù)調(diào)用的基本格式格式說(shuō)明:利用Command對(duì)象的Execute方法建立RecordSet對(duì)

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論