利用ADO實(shí)現(xiàn)數(shù)據(jù)庫的_第1頁
利用ADO實(shí)現(xiàn)數(shù)據(jù)庫的_第2頁
利用ADO實(shí)現(xiàn)數(shù)據(jù)庫的_第3頁
利用ADO實(shí)現(xiàn)數(shù)據(jù)庫的_第4頁
利用ADO實(shí)現(xiàn)數(shù)據(jù)庫的_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第第7章章 利用利用ADO實(shí)現(xiàn)數(shù)據(jù)庫實(shí)現(xiàn)數(shù)據(jù)庫的存取的存取本章要點(diǎn)本章要點(diǎn)nConnection對(duì)象nRecordset對(duì)象nCommand對(duì)象nField對(duì)象nError對(duì)象nASP作為動(dòng)態(tài)Web應(yīng)用程序,其開發(fā)Web數(shù)據(jù)庫是其最重要的環(huán)節(jié)。ADO(ActiveX Data Objects ActiveX數(shù)據(jù)對(duì)象)是微軟提供的新一代數(shù)據(jù)庫存取訪問技術(shù),ASP內(nèi)置的ADO組件是數(shù)據(jù)庫開發(fā)的重要工具。n應(yīng)用ADO組件,通過ODBC驅(qū)動(dòng)程序或OLE DB鏈接字符串可實(shí)現(xiàn)ASP與數(shù)據(jù)庫之間的連接,通過ADO組件提供的各種方法實(shí)現(xiàn)數(shù)據(jù)檢索和數(shù)據(jù)編輯等操作。n本章將重點(diǎn)介紹ADO對(duì)象的結(jié)構(gòu)和配置,以及各

2、種數(shù)據(jù)訪問對(duì)象。本章將詳細(xì)介紹ActiveX數(shù)據(jù)對(duì)象及其在ASP編程中的應(yīng)用。8.1 ADO簡介簡介nADO對(duì)象的主要優(yōu)點(diǎn)是高速、容易使用、占用內(nèi)存和磁盤空間少,所以非常適合于作為服務(wù)器端的數(shù)據(jù)庫訪問技術(shù)。nADO對(duì)象是多線程的,在出現(xiàn)大量并發(fā)請(qǐng)求時(shí),也同樣可以保持服務(wù)器的運(yùn)行效率,并且通過連接池技術(shù)以及對(duì)數(shù)據(jù)庫連接資源的完全控制,提供與遠(yuǎn)程數(shù)據(jù)庫的高效連接與訪問,同時(shí)它還支持事務(wù)處理,以開發(fā)高效率、高可靠性的數(shù)據(jù)庫應(yīng)用程序。nA D O 結(jié) 合 了 O L E D B 易 于 使 用 的 特 性 以 及RDO(Remote Data Objects 遠(yuǎn)程數(shù)據(jù)對(duì)象)和DAO(Data Acce

3、ss Ojects 數(shù)據(jù)訪問對(duì)象)模型中的最好特性,并將它們重新組織在一個(gè)對(duì)象模型中。nADO包含所有可以被OLE DB標(biāo)準(zhǔn)對(duì)象描述的數(shù)據(jù)類型,即ADO對(duì)象模型具有擴(kuò)展性,即使對(duì)于那些從來沒有見到過的記錄集的信息格式,只要使用正常的ADO編程對(duì)象,就能夠可視化地處理所有的工作,ADO對(duì)象模型給開發(fā)人員提供了一種快捷、簡單、高效的數(shù)據(jù)庫訪問方法,可以在腳本中使用ADO對(duì)象建立對(duì)數(shù)據(jù)庫的連接,并從數(shù)據(jù)庫中讀取記錄,形成需要的對(duì)象集合。n使用ADO對(duì)象建立對(duì)數(shù)據(jù)庫的連接有兩種方法:n使用面向ODBC驅(qū)動(dòng)器的OLE DB驅(qū)動(dòng)程序建立連接,這種連接與任何有ODBC驅(qū)動(dòng)器的數(shù)據(jù)庫兼容。n使用原始的OLE

4、DB驅(qū)動(dòng)程序建立連接。nADO組件由ADODB對(duì)象庫構(gòu)成,ADODB對(duì)象庫主要包含3個(gè)對(duì)象和2個(gè)數(shù)據(jù)集合。它們分別是:Connection對(duì)象、Recordset對(duì)象、Field對(duì)象、Fields集合、Error集合。nADO把絕大部分的數(shù)據(jù)庫操作封裝在上述3個(gè)對(duì)象中,在ASP頁面中編程調(diào)用這些對(duì)象執(zhí)行相應(yīng)的數(shù)據(jù)庫操作。8.2 Connection對(duì)象對(duì)象nConnection對(duì)象用來建立數(shù)據(jù)源和ASP程序之間的連接。它代表ASP程序與數(shù)據(jù)源的唯一對(duì)話,建立 到 數(shù) 據(jù) 源 的 連 接 后 , 可 以 在 此 基 礎(chǔ) 上 用RecordSet對(duì)象或Command對(duì)象對(duì)數(shù)據(jù)庫進(jìn)行查詢、更新、插入

5、、刪除等操作。 n要 實(shí) 現(xiàn) 打 開 和 關(guān) 閉 數(shù) 據(jù) 庫 連 接 , 首 先 要 應(yīng) 用Connection對(duì)象創(chuàng)建數(shù)據(jù)連接,因?yàn)镃onnection對(duì)象不是ASP內(nèi)置對(duì)象,要使用Connection對(duì)象,必須首先顯式地創(chuàng)建它。 n創(chuàng)建了Connection對(duì)象之后,需要打開該連接才能連接到數(shù)據(jù)庫。若使用ODBC進(jìn)行數(shù)據(jù)源連接,則對(duì)應(yīng)的語法為: nConnection對(duì)象也可直接連接到Access數(shù)據(jù)庫 n應(yīng)用完Connection對(duì)象之后,用戶最好關(guān)閉并釋放Connection對(duì)象,來緩解數(shù)據(jù)庫服務(wù)器的壓力。其語法如下: 屬性含義ConnectionString包含用來和數(shù)據(jù)源建立連接的

6、字符串。ConnectionTimeOut包含連接到數(shù)據(jù)庫的等待最長時(shí)間。如果超過此時(shí)間,則認(rèn)為連接失敗。DefaultDatabase當(dāng)前連接數(shù)據(jù)源所使用的默認(rèn)數(shù)據(jù)庫。Provider包含Connection對(duì)象的數(shù)據(jù)提供者名稱。State包含Connection對(duì)象的當(dāng)前狀態(tài),返回一個(gè)描述連接是打開還是關(guān)閉的值。n1ConnectionTimeOut屬性:屬性:可設(shè)置或返回在終止嘗試和產(chǎn)生錯(cuò)誤之前打開連接需要等待的秒數(shù)。默認(rèn)是 15 秒,語法格式如下:nSet conn=server.createobject(“Adodb.connection”)nConn.connectiontimeo

7、ut=30n2ConnectionString 屬性屬性:可設(shè)置或返回用于建立到數(shù)據(jù)源的連接的信息:nset conn=Server.CreateObject(ADODB.Connection)nconn.ConnectionStringn3DefaultDatabase 屬性:屬性:可設(shè)置或返回一個(gè)字符串值,該值是特定 Connection 對(duì)象上的默認(rèn)數(shù)據(jù)庫的名稱:nset conn=Server.CreateObject(ADODB.Connection)nconn.DefaultDatabase=database.mdb n4Provider屬性屬性:可設(shè)置或返回包含特定 Connec

8、tion 對(duì)象的提供者名稱的字符串值。默認(rèn)是 (Microsoft OLE DB provider for ODBC),連接關(guān)閉時(shí)可讀寫:nset conn=Server.CreateObject(ADODB.Connection)nconn.Open(Server.Mappath(database.mdb)nresponse.write(conn.Provider)nconn.close n5State 屬性屬性:可返回一個(gè)值,為只讀。該值描述對(duì)象的當(dāng)前狀態(tài)是打開、關(guān)閉、正在連接、正在執(zhí)行還是正在檢索數(shù)據(jù)。n0:對(duì)象已經(jīng)關(guān)閉n1:對(duì)象已經(jīng)打開n2:對(duì)象正在連接 n4:對(duì)象正在執(zhí)行命令n8:正

9、在檢索對(duì)象的行 方法描述Open打開一個(gè)數(shù)據(jù)庫的鏈接。Execute該方法可以執(zhí)行SQL語句,并且返回一個(gè)RecordSet對(duì)象。Close關(guān)閉一個(gè)已經(jīng)打開的鏈接。BeginTrans開始一個(gè)新事務(wù)。CommitTrans保存任何更改并結(jié)束當(dāng)前事務(wù)。RollbackTrans取消當(dāng)前事務(wù)中所作的任何更改并結(jié)束事務(wù)。n1Open 方法:方法:用于打開與數(shù)據(jù)源的連接,只有調(diào)用了Connection對(duì)象的Open方法后,Connection對(duì)象才會(huì)真正存在,然后才能發(fā)命令對(duì)數(shù)據(jù)源產(chǎn)生作用。 語法為: connection.Open connectionstring,userID,passwordnc

10、onnectionstring:可選。一個(gè)包含有關(guān)連接的信息的字符串值。該字符串由一系列被分號(hào)隔開的 parameter=value 語句組成的。nuserID:可選。一個(gè)字符串值,包含建立連接時(shí)要使用的用戶名稱。nPassword:可選。一個(gè)字符串值,包含建立連接時(shí)要使用的密碼。n直接將數(shù)據(jù)源連接字符串傳遞給open方法:nset conn=Server.CreateObject(ADODB.Connection)nstrServer.MapPath(database.mdb)nConn.Open strn先給Connection對(duì)象的ConnectionString屬性賦值,然后調(diào)用Ope

11、n方法:nset conn=Server.CreateObject(ADODB.Connection)nstrServer.MapPath(database.mdb)nconn.connectionString=strnconn.OpennAccess數(shù)據(jù)庫直接的連接方法:nSet conn=server.createobject(“Adodb.connection”)nConn.open “Driver=Microsoft Access Driver (*.mdb);DBQ=” & server.mappath(“database.mdb”)nAccess數(shù)據(jù)庫的OLE DB連接方法

12、:nset conn=Server.CreateObject(ADODB.Connection)nConn.openServer.MapPath(database.mdb)nSQL Server的連接方法:nset conn=Server.CreateObject(ADODB.Connection)nConn.open “Driver=SQL Server;Server=服務(wù)器名稱;UID=登錄名;PWD=密碼;Database=數(shù)據(jù)庫名稱;” nSQL Server數(shù)據(jù)庫的OLE DB連接方法:nset conn=Server.CreateObject(ADODB.Connection)nC

13、onn.open “Provider=SQLOLEDB.1;Data Source=服務(wù)器名;user ID=登錄名;Password=密碼;initial catalog=數(shù)據(jù)庫名”n數(shù)據(jù)庫的DSN連接方法:nset conn=Server.CreateObject(ADODB.Connection)nConn.open “DSN=DSN名稱”n2Execute方法:方法:此方法可用于執(zhí)行指定的SQL語句,用于實(shí)現(xiàn)對(duì)數(shù)據(jù)庫表的修改、插入、刪除和查詢等操作。其一般格式有以下兩種:n1)執(zhí)行SQL查詢語句時(shí),將返回查詢得到的記錄數(shù)。語法為: Set 對(duì)象變量名= Connection.Execu

14、te(“SQL查詢語句”)ndim connnSet Conn=Server.CreateObject(ADODB.Connection)nSet rs = Conn.Execute (SQL語句)n2)執(zhí)行操作性語句時(shí),沒有記錄集的返回。語法為: Connection.Execute CommandText, RecordsAffected, Optionsncommandtext:字符串類型,可以是SQL語句,表名稱,存儲(chǔ)過程等nRecordsAffected:操作所影響的記錄個(gè)數(shù)nOptions:告訴數(shù)據(jù)源commandtext的類型,1表示SQL語句;2表示表名;4表示存儲(chǔ)過程;8表示

15、不清楚;n3Close方法:方法:該方法用于關(guān)閉連接對(duì)象,以釋放所占用的系統(tǒng)資源。nConn.closenSet conn=nothing 8.3 RecordSet對(duì)象對(duì)象 n除了利用Connection對(duì)象的Execute方法可獲得記錄集外,利用ADO的RecordSet對(duì)象,也可獲得記錄集,且該方法所獲得的記錄集,具有更靈活的控制性和更強(qiáng)的功能。n在打開記錄集之前,可以詳細(xì)設(shè)置記錄集的游標(biāo)和鎖定類型,以決定可對(duì)一個(gè)記錄集進(jìn)行怎樣的操作。同時(shí)該對(duì)象提供了一系列的方法和屬性,通過編程可以非常方便的處理記錄集,下面介紹該對(duì)象的應(yīng)用。n創(chuàng)建一個(gè)RecordSet對(duì)象實(shí)例,語法如下: Set rs

16、=Server.CreateObject(“ADODB.RecordSet”) n1ActiveConnection屬性:屬性:通過設(shè)置RecordSet對(duì)象的ActiveConnection屬性可以使Recordset對(duì)象與特定的Connection對(duì)象相關(guān)聯(lián),ActiveConnection屬性可以是一個(gè)Connection對(duì)象名稱或是一個(gè)包含數(shù)據(jù)源連接信息的字符串,如果連接被關(guān)閉,設(shè)置或返回連接的定義,如果連接打開,設(shè)置或返回當(dāng)前的 Connection 對(duì)象。n2Source屬性:屬性:可以是一個(gè)Command對(duì)象名稱、一條SQL語句或是一個(gè)指定的數(shù)據(jù)表等。n3CursorType屬性

17、:屬性:設(shè)置或返回一個(gè) Recordset 對(duì)象的游標(biāo)類型。在 ADO中,定義了 4種不同的游標(biāo)(指針)類型。符號(hào)常量值含義AdOpenForwardOnly0默認(rèn)值,僅向前游標(biāo),只允許在Recordset中向前滾動(dòng)。此外,由其他用戶所做的添加、更改和刪除將是不可見的。adOpenKeyset1鍵集游標(biāo),允許用戶看到其他用戶所做的數(shù)據(jù)更改。但不能看到其他用戶添加和刪除的記錄。adOpenDynamic2動(dòng)態(tài)游標(biāo),用戶可以看到其他用戶所作的添加、更改和刪除。adOpenStatic3靜態(tài)游標(biāo),提供記錄集的靜態(tài)副本,可用來查找數(shù)據(jù)或生成報(bào)告。此外,由其他用戶所做的添加、更改和刪除將是不可見的。n4

18、LockType屬性:屬性:設(shè)置或返回當(dāng)編輯 Recordset 中的一條記錄時(shí),可指定鎖定類型的值。符號(hào)常量值含義adLockReadOnly0默認(rèn)值。以只讀模式打開,故不能更新、插入或刪除記錄集中的記錄。adLockPessimistic1保守式記錄鎖定。在編輯修改一個(gè)記錄時(shí),立即鎖定它,以防止其他用戶對(duì)其進(jìn)行操作。最安全的鎖定機(jī)制。adLockOptimistic2開放式記錄鎖定。在編輯修改記錄時(shí),并未加鎖,只有在調(diào)用記錄集的Update方法更新記錄時(shí),才鎖定記錄。adLockBatchOptimistic3開放式批更新,用于立即更新模式相反的批更新模式。n5RecordCount屬性:

19、屬性:返回一個(gè) Recordset 對(duì)象中的記錄數(shù)目。n6BOF屬性:屬性:如果當(dāng)前的記錄位置在第一條記錄之前,則返回 true,否則返回 fasle。n7EOF屬性:屬性:如果當(dāng)前記錄的位置在最后的記錄之后,則返回 true,否則返回 fasle。利用該屬性,可防止指針越界而發(fā)生錯(cuò)誤。通常用來作為循環(huán)訪問記錄集結(jié)束的標(biāo)志。n8PageSize屬性:屬性:設(shè)置或返回 Recordset 對(duì)象的一個(gè)單一頁面上所允許的最大記錄數(shù)。n9PageCount屬性屬性:返回一個(gè) Recordset 對(duì)象中的數(shù)據(jù)頁數(shù)。n10AbsolutePage屬性屬性:設(shè)置或返回一個(gè)可指定 Recordset 對(duì)象中頁

20、碼的值。n11AbsolutePosition屬性屬性:設(shè)置或返回一個(gè)值,此值可指定 Recordset 對(duì)象中當(dāng)前記錄的順序位置(序號(hào)位置)。該屬性一般是介于1和RecordCount屬性值之間的整數(shù)。 n1Open方法:方法:RecordSet對(duì)象中最重要的方法是應(yīng)用Open方法可打開一個(gè)記錄集,其語法如下: 記錄集對(duì)象實(shí)例變量.Open Source,ActiveConnection,CursorType,LockType,Options nSource:該參數(shù)可以是含有一個(gè)SQL字符串、表格、視圖名稱或者存儲(chǔ)過程調(diào)用的字符串nActiveConnection:該參數(shù)可以Connecti

21、on對(duì)象的實(shí)例名或字符串。 nCursorType:用來確定服務(wù)器打開Recordset時(shí)應(yīng)該使用的游標(biāo)類型。nLockType:用來確定服務(wù)器打開Recordset時(shí)應(yīng)該使用的鎖定類型。nOptions:該參數(shù)用于指定Source參數(shù)項(xiàng)的命令字符串的類型,其取值與對(duì)應(yīng)的類型與Connection對(duì)象中Execute方法中Options參數(shù)相同nconst adCmdText=1nconst adOpenStatic=3nconst adLockPessimistic =1 nset conn=Server.CreateObject(ADODB.Connection)nconn.Open se

22、rver.mappath(database.mdb)nfhsql=select * from studentnset rs=server.CreateObject(adodb.recordset)nrs.open fhsql,conn,adOpenStatic,adLockReadOnly,adCmdTextn一些處理語句nrs.closenSet rs=nothingnconn.close nset conn=nothingn2RecordSet對(duì)象其它方法對(duì)象其它方法: RecordSet對(duì)象提供了如表所示的非常豐富的記錄集方法,通過這些方法可實(shí)現(xiàn)對(duì)記錄集的添加、刪除、修改等各種操作。方法

23、描述AddNew創(chuàng)建一條新記錄。Close關(guān)閉一個(gè)Recordset。Delete刪除一條記錄或一組記錄。Find搜索一個(gè)Recordset中滿足指定某個(gè)條件的一條記錄。GetRows把多條記錄從一個(gè)Recordset對(duì)象中拷貝到一個(gè)二維數(shù)組中。GetString將Recordset作為字符串返回。Move在Recordset對(duì)象中移動(dòng)記錄指針。MoveFirst把記錄指針移動(dòng)到第一條記錄。MoveLast把記錄指針移動(dòng)到最后一條記錄。MoveNext把記錄指針移動(dòng)到下一條記錄。MovePrevious把記錄指針移動(dòng)到上一條記錄。Open打開一個(gè)數(shù)據(jù)庫元素,此元素可提供對(duì)表的記錄、查詢的結(jié)果或

24、保存的Recordset的訪問。Seek搜索Recordset的索引以快速定位與指定的值相匹配的行,并使其成為當(dāng)前行。Update保存所有對(duì)Recordset對(duì)象中的一條單一記錄所做的更改。UpdateBatch把所有Recordset中的更改存入數(shù)據(jù)庫。請(qǐng)?jiān)谂履J街惺褂谩?.5 Errors數(shù)據(jù)集合和數(shù)據(jù)集合和Error對(duì)象對(duì)象 n當(dāng)ADO對(duì)象的操作產(chǎn)生錯(cuò)誤時(shí),會(huì)有一個(gè)或多個(gè)Error對(duì)象被放到Connection對(duì)象的Errors集合中;據(jù)此,可獲得產(chǎn)生錯(cuò)誤的原因和來源,以便采取適當(dāng)?shù)拇胧?,使程序更加完善。Error對(duì)象可通過建立的Connection對(duì)象的Errors數(shù)據(jù)集合取得。 n所有Error對(duì)象的集合用來響應(yīng)一個(gè)連接(Connection)上的錯(cuò)誤。Errors數(shù)據(jù)集合包括兩個(gè)屬性:Count和Item。 1. Count屬性:屬性:用來指示集合中有多少個(gè)Error對(duì)象,應(yīng)用語法為: long=Errors集合變量.count。 Errors集合的屬性Count可以獲得數(shù)據(jù)庫是否發(fā)生了錯(cuò)誤,如果沒有錯(cuò)誤

溫馨提示

  • 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)論