ADO數(shù)據(jù)訪問接口培訓(xùn)教程_第1頁
ADO數(shù)據(jù)訪問接口培訓(xùn)教程_第2頁
ADO數(shù)據(jù)訪問接口培訓(xùn)教程_第3頁
ADO數(shù)據(jù)訪問接口培訓(xùn)教程_第4頁
ADO數(shù)據(jù)訪問接口培訓(xùn)教程_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第6章 ADO數(shù)據(jù)訪問接口6內(nèi)容提要本章介紹ADO的基本概念,以及如何在ASP程序中使用ADO的對(duì)象。介紹ADO的對(duì)象Connection、RecordSet和Command的使用。介紹SQL語句的基本概念及如何利用SQL語句操作數(shù)據(jù)庫。并介紹訪問數(shù)據(jù)庫的三個(gè)基本格式。ADO數(shù)據(jù)訪問接口概述 ADO常用的四種對(duì)象及其功能如下。(1) 連接對(duì)象(Connection):用來連接數(shù)據(jù)庫。(2) 記錄集對(duì)象(RecordSet):用來保存查詢語句返回的結(jié)果。(3) 命令對(duì)象(Command):用來執(zhí)行SQL(Structured Query Language)語句或者SQL Server的存儲(chǔ)過程。

2、(4) 參數(shù)對(duì)象(Parameter):用來為存儲(chǔ)過程或查詢提供參數(shù)。下面介紹常用的連接對(duì)象(Connection)、記錄集對(duì)象(RecordSet)、命令對(duì)象(Command)。Connection數(shù)據(jù)對(duì)象 與數(shù)據(jù)庫的所有通信都通過一個(gè)打開的Connection對(duì)象進(jìn)行。對(duì)一個(gè)數(shù)據(jù)庫進(jìn)行數(shù)據(jù)的插入和讀取之前,必須先打開數(shù)據(jù)庫的連接數(shù)據(jù)庫表是由行和列組成的一個(gè)二維表,當(dāng)使用ADO打開數(shù)據(jù)庫的時(shí)候,會(huì)有一個(gè)指針指向某一行記錄,默認(rèn)的情況下該指針指向數(shù)據(jù)庫表的第一行。假定該指針叫“rs”,如果要訪問數(shù)據(jù)庫表的字段,可以用圖6-1所示的方法。關(guān)系型數(shù)據(jù)庫表與指針 其中:寫法rs(0)、rs(“學(xué)號(hào)”

3、)、rs.Fields(0)和rs.Fields(“學(xué)號(hào)”)是相同的,寫法rs(3)、rs(“語文”)、rs.Fields(3)和rs.Fields(“語文”)是相同的,其余類推。根據(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ù)庫連接 要建立與一個(gè)數(shù)據(jù)庫的連接,首先創(chuàng)建Connection對(duì)象的一個(gè)

4、實(shí)例,然后調(diào)用Connection對(duì)象的Open方法打開一個(gè)連接通過程序6-01.asp輸出數(shù)據(jù)庫的表頭。 數(shù)據(jù)庫調(diào)用的基本格式格式一:數(shù)據(jù)庫調(diào)用的基本格式格式說明:利用Execute方法執(zhí)行SQL語句第一步:建立Connection對(duì)象set conn = Server.CreateObject(ADODB.Connection)第二步:使用Connection對(duì)象的Open方法建立數(shù)據(jù)庫連接conn.Open(driver=Microsoft Access Driver (*.mdb);dbq= &_Server.MapPath(person.mdb)第三步:使用Connection對(duì)象的

5、Execute方法執(zhí)行SQL語句如果執(zhí)行查詢語句set rs = conn.Execute( 數(shù)據(jù)查詢語句 )如果執(zhí)行數(shù)據(jù)操縱語句conn.Execute( 數(shù)據(jù)操縱語句 )格式一的特點(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)程序打開服務(wù)器上的某個(gè)Access數(shù)據(jù)庫,第三步執(zhí)行SQL語句。 Connection對(duì)象 參數(shù)說明用法DsnODBC數(shù)據(jù)源的名稱Dsn=ODBC名稱User數(shù)據(jù)庫登錄的

6、用戶名User=Database UserPassword數(shù)據(jù)庫登錄的密碼Password =User PasswordDriver數(shù)據(jù)庫驅(qū)動(dòng)程序的類型Access用Access的驅(qū)動(dòng),其他數(shù)據(jù)數(shù)據(jù)庫用其他驅(qū)動(dòng)。Dbq數(shù)據(jù)庫的物理路徑Dbq = C:accdb.mdbProvider數(shù)據(jù)提供者Provider=Microsoft.Jet.OLEDB.4.0其他類型的數(shù)據(jù)庫連接 連接的數(shù)據(jù)庫說明OracleDriver=Microsoft ODBC for Oracle;Server=服務(wù)器地址;User=;Password=SQL ServerServer=服務(wù)器地址;Database=數(shù)據(jù)庫

7、名;uid=用戶名;pwd=ExcelDriver=Microsoft Excel Driver(*.xls);Dbq=Excel文件的物理路徑文本文件Driver=Microsoft Text Driver(*.txt;*.csv);DefaultDir=文件的物理路徑Connection對(duì)象的方法和屬性 方法名稱說明用法Open()建立連接Conn.Open(數(shù)據(jù)庫連接串)Close()關(guān)閉與數(shù)據(jù)庫連接Conn.Close()Execute()執(zhí)行數(shù)據(jù)庫查詢Conn.Execute(SQL語句或者表名)BeginTrans()開始事務(wù)處理Conn.BeginTrans()CommitTra

8、ns()提交事務(wù)處理Conn.CommitTrans()RollbackTrans()取消事務(wù)處理Conn.RollbackTRans()Connection對(duì)象的屬性 屬性名稱說明用法CommandTimeoutExecute方法最長執(zhí)行時(shí)間默認(rèn)值為30秒鐘,可以修改ConnectionTimeoutOpen方法最長執(zhí)行時(shí)間默認(rèn)值為15秒,可以修改ConnectionString數(shù)據(jù)庫的連接串可以將連接串賦值給該屬性Mode用來設(shè)置操作權(quán)限1為只讀、2為只寫、3為可讀可寫Version獲取ADO的版本信息Conn.Version向?yàn)g覽器輸出數(shù)據(jù)庫內(nèi)容 向?yàn)g覽器輸出了表頭后,可以利用Recor

9、dSet記錄集返回?cái)?shù)據(jù)庫表中的數(shù)據(jù),如程序6-02.asp所示。 輸出表中所有數(shù)據(jù) 用一個(gè)循環(huán)輸出數(shù)據(jù)庫中所有的數(shù)據(jù)。當(dāng)數(shù)據(jù)庫打開時(shí),rs對(duì)象定位在數(shù)據(jù)庫表的第一條記錄上,輸出第一條記錄的內(nèi)容;要想輸出第二條記錄,必須執(zhí)行rs.MoveNext()指令,讓它移動(dòng)到下一條記錄。rs.BOF(Begin Of File,文件開頭)和rs.EOF(End Of File,文件結(jié)尾)這兩條指令判斷記錄指針是否移動(dòng)最前面和最后面,BOF的位置是在第一條記錄之前,EOF是在最后一條記錄之后。如果rs指針在最后一條記錄上,再執(zhí)行一次MoveNext()時(shí)則rs.EOF為真。如果rs.EOF或者rs.BOF為

10、真,這時(shí)讀取數(shù)據(jù)會(huì)出錯(cuò)。 數(shù)據(jù)庫表的結(jié)構(gòu) 使用事務(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所示。 Connection對(duì)象中的Errors集合 Error對(duì)象是Connection對(duì)象的子對(duì)象。數(shù)據(jù)庫程序運(yùn)行的時(shí)候,一個(gè)錯(cuò)誤就是一個(gè)Error對(duì)象,所有的Error對(duì)象就組成了Errors集合,又稱為錯(cuò)

11、誤集合??梢岳肊rrors集合的Count屬性來判斷是否有錯(cuò)誤發(fā)生,還可以提取出錯(cuò)誤的描述,最后根據(jù)錯(cuò)誤的類型,給出相應(yīng)的解決措施。Errors對(duì)象提供一些屬性來得到錯(cuò)誤信息 Error對(duì)象的屬性 參數(shù)說明用法Number錯(cuò)誤編號(hào)Err.NumberDescription錯(cuò)誤描述Err.DescriptionSource發(fā)生錯(cuò)誤的原因Err.SourceHelpContext錯(cuò)誤的提示文字Err.HelpContextHelpFile錯(cuò)誤的提示文件Err.HelpFileNativeError數(shù)據(jù)庫服務(wù)器產(chǎn)生的錯(cuò)誤Err.NativeErrorRecordSet數(shù)據(jù)對(duì)象 記錄集可以用來代替表

12、中的記錄。一個(gè)記錄集包含一條或多條記錄(行),每條記錄包括一個(gè)或多個(gè)域(字段)。在任何時(shí)刻,只有一條記錄是當(dāng)前記錄。創(chuàng)建記錄集對(duì)象的一個(gè)實(shí)例,可以使用Connection對(duì)象的Execute()方法,用Execute()創(chuàng)建的記錄集指針只能向下,而不能向上移動(dòng),即不能執(zhí)行MoveFirst()和MovePrevious()指令。 RecordSet對(duì)象的屬性及方法 利用RecordSet對(duì)象的屬性和方法可以完全操作一個(gè)數(shù)據(jù)庫,理論上只要SQL語句可以完成的操作利用RecordSet對(duì)象都可以實(shí)現(xiàn)。RecordSet對(duì)象的屬性和方法很多,常用的方法如表6-6所示。 RecordSet對(duì)象的方法

13、方法說明用法Open()打開記錄集rs.Open()Close()關(guān)閉記錄集rs.Close()Requery重新打開記錄集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()從記錄集中刪

14、除當(dāng)前記錄rs. Delete()Update()保存對(duì)當(dāng)前記錄所做的修改rs. Update()UpdateBatch()保存對(duì)一個(gè)或多個(gè)記錄的修改rs. UpdateBatch()CancelBatch()取消一批更新rs. CancelBatch()RecordSet對(duì)象的屬性 屬性說明用法ActiveConnection當(dāng)前記錄集用的數(shù)據(jù)連接rs. ActiveConnection = connRecordCounts記錄集的總數(shù)rs.RecordCountsBOF記錄集的開頭rs.BOFEOF記錄集的結(jié)尾rs.EOFPageCount返回記錄集中的邏輯頁數(shù)rs.PageCountPa

15、geSize返回邏輯頁中的記錄個(gè)數(shù)rs.PageSize 默認(rèn)值是10AbsolutePage指定當(dāng)前的頁rs.AbsolutePageAbsolutePosition指定當(dāng)前的記錄rs.AbsolutePosition使用RecordSet對(duì)象打開數(shù)據(jù)庫 格式二:數(shù)據(jù)庫調(diào)用的基本格式格式說明:利用RecordSet對(duì)象打開數(shù)據(jù)庫表第一步:建立Connection對(duì)象set conn = Server.CreateObject(ADODB.Connection)第二步:使用Connection對(duì)象的Open方法建立數(shù)據(jù)庫鏈接conn.Open(driver=Microsoft Access D

16、river (*.mdb);dbq= &_Server.MapPath(Access數(shù)據(jù)庫)第三步:建立RecordSet對(duì)象set rs = Server.CreateObject(ADODB.Recordset)第四步:利用RecordSet對(duì)象的Open方法打開數(shù)據(jù)庫rs.Open SQL語句, conn, 打開方式, 鎖定類型 打開類型的四個(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è)用戶刪除或

17、改變一條記錄,記錄集中將反映這個(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ì)其他用戶造成的記錄變化有所反映。鎖定類型的參數(shù)如下 (1)adLockReadOnly:只讀鎖定,對(duì)應(yīng)的數(shù)字是1(默認(rèn)值),不能修改記錄集中的記錄。(2)adLockPessimistic:悲觀鎖定,對(duì)應(yīng)的數(shù)字是2,指定在編輯一個(gè)記錄時(shí),立即

18、鎖定它。進(jìn)入鎖定rs(數(shù)學(xué)) = rs(數(shù)學(xué)) + 100rs(語文) = rs(語文) + 100 rs.Update() 解除鎖定鎖定類型的參數(shù) (3)adLockOptimistic:樂觀鎖定,對(duì)應(yīng)的數(shù)字是3,指定只有調(diào)用記錄集的Update方法時(shí),才鎖定記錄。rs(數(shù)學(xué)) = rs(數(shù)學(xué)) + 100rs(語文) = rs(語文) + 100進(jìn)入鎖定 rs.Update() 解除鎖定(4)adLockBatchOptimistic:批次樂觀鎖定,對(duì)應(yīng)的數(shù)字是4,指定記錄只能成批地更新。 For I = 1 to 10rs (語文)= rs (語文) + 100rs (數(shù)學(xué)) = rs

19、(數(shù)學(xué)) + 100 rs.MoveNext() Next進(jìn)入鎖定 rs.UpdateBatch() 解除鎖定RecordSet當(dāng)數(shù)據(jù)庫第一次打開時(shí),RecordSet指針定位在第一條記錄上,可以利用AbsolutePosition直接定位到某條記錄上,基本的語法是:AbsolutePosition=N,如程序6-07.asp文件所示。 AbsolutePage還有一個(gè)屬性是AbsolutePage,當(dāng)調(diào)用AbsolutePage時(shí),系統(tǒng)將對(duì)數(shù)據(jù)記錄進(jìn)行分頁,默認(rèn)每頁為10條記錄,AbsolutePage為幾,記錄指針就自動(dòng)定位到第幾頁的第一條記錄上。比如說,AbsolutePage = 3,

20、則記錄指針就自動(dòng)定位到第21條記錄上去了,此時(shí)AbsolutePosition = 21。計(jì)算公式為:AbsolutePosition = (Absolute1)*PageSize,PageSize默認(rèn)是10,也可以設(shè)置為其他的值。使用方法如程序6-08.asp所示 實(shí)現(xiàn)數(shù)據(jù)庫的分頁顯示 數(shù)據(jù)庫中可能有成千上萬條記錄,如果一次都顯示出來的話消耗的時(shí)間太多。下面通過一個(gè)案例分成六個(gè)版本實(shí)現(xiàn)數(shù)據(jù)庫的分頁顯示。 案例6-1 分頁顯示首先利用格式二將數(shù)據(jù)庫表中某頁的所有記錄輸出,如程序pageV1.asp所示。在程序中加上翻頁的超級(jí)鏈接就可以實(shí)現(xiàn)翻頁,如程序pageV2.asp所示??梢岳肞ageC

21、ount屬性得到總頁數(shù),修正這些可能出現(xiàn)的錯(cuò)誤,得到版本三。如程序pageV3.asp所示。加入超級(jí)鏈接的版本四如程序pageV4.asp所示,將姓名一列加上超級(jí)鏈接。 偶數(shù)行和奇數(shù)行可顯示不同的背景顏色。版本五將實(shí)現(xiàn)這些功能,如程序pageV5.asp所示。 Command數(shù)據(jù)對(duì)象 Command對(duì)象又稱為命令對(duì)象,可以執(zhí)行SQL語句和執(zhí)行SQL Server的存儲(chǔ)過程。通過傳遞SQL指令對(duì)數(shù)據(jù)庫提出操作要求,把得到的結(jié)果返回給RecordSet對(duì)象。Command對(duì)象的屬性和方法 屬性說明用法ActiveConnection指定Command用的連接cmd. ActiveConnectio

22、n = connCommandText指定數(shù)據(jù)庫查詢信息cmd. ActiveConnection =表名或SQLCommandType數(shù)據(jù)查詢的類型cmd. CommandType =1, 2,4CommandTimeout執(zhí)行SQL語句的最長時(shí)間默認(rèn)為30秒Prepared是否預(yù)編譯,可以加快速度cmd.Parpared True/ FalseCommand對(duì)象提供的方法 方法說明用法Execute()執(zhí)行SQL語句、表名或者存儲(chǔ)過程cmd.Execute()CreateParameter()創(chuàng)建Command對(duì)象的參數(shù)cmd.CreateParameter()格式三格式三:數(shù)據(jù)庫調(diào)用的基

23、本格式格式說明:利用Command對(duì)象的Execute方法建立RecordSet對(duì)象第一步:建立Connection對(duì)象set conn = Server.CreateObject(ADODB.Connection)第二步:使用Connection對(duì)象的Open方法建立數(shù)據(jù)庫連接conn.Open(driver=Microsoft Access Driver (*.mdb);dbq= +Server.MapPath(Access數(shù)據(jù)庫)第三步:建立Command對(duì)象cmd = Server.CreateObject(ADODB.Command)cmd.ActiveConnection = conncmd.CommandText = sql第四步:使用Command對(duì)象的Execute方法執(zhí)行SQL語句如果執(zhí)行查詢語句rs = cmd.Execute()如果執(zhí)行數(shù)據(jù)操縱語句cmd.Execute()使用Command對(duì)象使用Command對(duì)象來執(zhí)行SQL 語句,如程序6-09.asp所示。 例6-2 分頁列表的刪除和修改 本案例實(shí)現(xiàn)的功能是:為案例6-1的分頁列表添加修改數(shù)據(jù)和刪除數(shù)據(jù)的功能。首先為列表添加兩列:修改和刪除。顯示的主頁面如圖6-16所示。案例6-3 分頁版本的留言簿這里再對(duì)留言簿作一次升級(jí),在案例5-2的基礎(chǔ)上加入分頁功能。只要更改display.asp文件就可

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論