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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

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

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

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

10、onnectionstring:可選。一個包含有關連接的信息的字符串值。該字符串由一系列被分號隔開的 parameter=value 語句組成的。nuserID:可選。一個字符串值,包含建立連接時要使用的用戶名稱。nPassword:可選。一個字符串值,包含建立連接時要使用的密碼。n直接將數(shù)據(jù)源連接字符串傳遞給open方法:nset conn=Server.CreateObject(ADODB.Connection)nstrServer.MapPath(database.mdb)nConn.Open strn先給Connection對象的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=服務器名稱;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=服務器名;user ID=登錄名;Password=密碼;initial catalog=數(shù)據(jù)庫名”n數(shù)據(jù)庫的DSN連接方法:nset conn=Server.CreateObject(ADODB.Connection)nConn.open “DSN=DSN名稱”n2Execute方法:方法:此方法可用于執(zhí)行指定的SQL語句,用于實現(xiàn)對數(shù)據(jù)庫表的修改、插入、刪除和查詢等操作。其一般格式有以下兩種:n1)執(zhí)行SQL查詢語句時,將返回查詢得到的記錄數(shù)。語法為: Set 對象變量名= Connection.Execu

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

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

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

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

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

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

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

21、on對象的實例名或字符串。 nCursorType:用來確定服務器打開Recordset時應該使用的游標類型。nLockType:用來確定服務器打開Recordset時應該使用的鎖定類型。nOptions:該參數(shù)用于指定Source參數(shù)項的命令字符串的類型,其取值與對應的類型與Connection對象中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對象其它方法對象其它方法: RecordSet對象提供了如表所示的非常豐富的記錄集方法,通過這些方法可實現(xiàn)對記錄集的添加、刪除、修改等各種操作。方法

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論