




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 河北省邯鄲市六校2025屆高三下第一次測(cè)試化學(xué)試題含解析
- 2025屆四川宜賓市高三最后一模化學(xué)試題含解析
- 甘肅省廣河縣三甲集中學(xué)2025屆高考?jí)狠S卷化學(xué)試卷含解析
- 2025年摩托車主副軸組件項(xiàng)目建議書(shū)
- 浙江省十校聯(lián)盟2025屆高考化學(xué)必刷試卷含解析
- 床旁血液凈化技術(shù)的護(hù)理
- 小學(xué)生安全教育校本教材
- 青海省海南州2025屆高三壓軸卷化學(xué)試卷含解析
- 江蘇省南通市如東縣馬塘中學(xué)2025屆高考仿真卷化學(xué)試題含解析
- 湖北省巴東三中2025年高三二診模擬考試化學(xué)試卷含解析
- 過(guò)敏性休克完整版本
- 院感知識(shí)培訓(xùn)課件
- 高中英語(yǔ)新課程標(biāo)準(zhǔn)解讀課件
- 職業(yè)技術(shù)學(xué)院《裝配式混凝土構(gòu)件生產(chǎn)與管理》課程標(biāo)準(zhǔn)
- 液化氣站雙重預(yù)防體系手冊(cè)
- 綜合港區(qū)海水淡化引水工程施工組織設(shè)計(jì)
- DL∕ T 855-2004 電力基本建設(shè)火電設(shè)備維護(hù)保管規(guī)程
- DL∕ T 736-2010 農(nóng)村電網(wǎng)剩余電流動(dòng)作保護(hù)器安裝運(yùn)行規(guī)程
- 2021年化工企業(yè)典型事故案例分析
- MLS抽屜柜組裝作業(yè)指導(dǎo)書(shū)
- JB-T 14426-2023 往復(fù)式氣液混輸泵裝置
評(píng)論
0/150
提交評(píng)論