第8章 利用ADO實(shí)現(xiàn)數(shù)據(jù)庫的_第1頁
第8章 利用ADO實(shí)現(xiàn)數(shù)據(jù)庫的_第2頁
第8章 利用ADO實(shí)現(xiàn)數(shù)據(jù)庫的_第3頁
第8章 利用ADO實(shí)現(xiàn)數(shù)據(jù)庫的_第4頁
第8章 利用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)

文檔簡介

第7章利用ADO實(shí)現(xiàn)數(shù)據(jù)庫

的存取

本章要點(diǎn)Connection對(duì)象Recordset對(duì)象Command對(duì)象Field對(duì)象Error對(duì)象ASP作為動(dòng)態(tài)Web應(yīng)用程序,其開發(fā)Web數(shù)據(jù)庫是其最重要的環(huán)節(jié)。ADO(ActiveXDataObjectsActiveX數(shù)據(jù)對(duì)象)是微軟提供的新一代數(shù)據(jù)庫存取訪問技術(shù),ASP內(nèi)置的ADO組件是數(shù)據(jù)庫開發(fā)的重要工具。應(yīng)用ADO組件,通過ODBC驅(qū)動(dòng)程序或OLEDB鏈接字符串可實(shí)現(xiàn)ASP與數(shù)據(jù)庫之間的連接,通過ADO組件提供的各種方法實(shí)現(xiàn)數(shù)據(jù)檢索和數(shù)據(jù)編輯等操作。本章將重點(diǎn)介紹ADO對(duì)象的結(jié)構(gòu)和配置,以及各種數(shù)據(jù)訪問對(duì)象。本章將詳細(xì)介紹ActiveX數(shù)據(jù)對(duì)象及其在ASP編程中的應(yīng)用。8.1ADO簡介ADO對(duì)象的主要優(yōu)點(diǎn)是高速、容易使用、占用內(nèi)存和磁盤空間少,所以非常適合于作為服務(wù)器端的數(shù)據(jù)庫訪問技術(shù)。ADO對(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)用程序。ADO結(jié)合了OLEDB易于使用的特性以及RDO(RemoteDataObjects遠(yuǎn)程數(shù)據(jù)對(duì)象)和DAO(DataAccessOjects

數(shù)據(jù)訪問對(duì)象)模型中的最好特性,并將它們重新組織在一個(gè)對(duì)象模型中。ADO包含所有可以被OLEDB標(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ì)象集合。使用ADO對(duì)象建立對(duì)數(shù)據(jù)庫的連接有兩種方法:使用面向ODBC驅(qū)動(dòng)器的OLEDB驅(qū)動(dòng)程序建立連接,這種連接與任何有ODBC驅(qū)動(dòng)器的數(shù)據(jù)庫兼容。使用原始的OLEDB驅(qū)動(dòng)程序建立連接。ADO組件由ADODB對(duì)象庫構(gòu)成,ADODB對(duì)象庫主要包含3個(gè)對(duì)象和2個(gè)數(shù)據(jù)集合。它們分別是:Connection對(duì)象、Recordset對(duì)象、Field對(duì)象、Fields集合、Error集合。ADO把絕大部分的數(shù)據(jù)庫操作封裝在上述3個(gè)對(duì)象中,在ASP頁面中編程調(diào)用這些對(duì)象執(zhí)行相應(yīng)的數(shù)據(jù)庫操作。8.2

Connection對(duì)象Connection對(duì)象用來建立數(shù)據(jù)源和ASP程序之間的連接。它代表ASP程序與數(shù)據(jù)源的唯一對(duì)話,建立到數(shù)據(jù)源的連接后,可以在此基礎(chǔ)上用RecordSet對(duì)象或Command對(duì)象對(duì)數(shù)據(jù)庫進(jìn)行查詢、更新、插入、刪除等操作。8.2.1

打開和關(guān)閉數(shù)據(jù)庫連接

要實(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)建它。

<%

Dimconn

Setconn=Server.CreateObject("ADODB.Connection")

%>創(chuàng)建了Connection對(duì)象之后,需要打開該連接才能連接到數(shù)據(jù)庫。若使用ODBC進(jìn)行數(shù)據(jù)源連接,則對(duì)應(yīng)的語法為:

<%cn.Open"DSN=建立的系統(tǒng)DSN名稱"%>Connection對(duì)象也可直接連接到Access數(shù)據(jù)庫

<%

Dimconn

SetConn=Server.CreateObject("ADODB.Connection")

Conn.open"provider=microsoft.jet.oledb.4.0;datasource=“&server.

mappath("database.mdb")

%>應(yīng)用完Connection對(duì)象之后,用戶最好關(guān)閉并釋放Connection對(duì)象,來緩解數(shù)據(jù)庫服務(wù)器的壓力。其語法如下:

<%

Conn.close

Setconn=nothing

%>8.2.2

Connection對(duì)象的屬性

性含

義ConnectionString包含用來和數(shù)據(jù)源建立連接的字符串。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)閉的值。1.ConnectionTimeOut屬性:可設(shè)置或返回在終止嘗試和產(chǎn)生錯(cuò)誤之前打開連接需要等待的秒數(shù)。默認(rèn)是15秒,語法格式如下:Setconn=server.createobject(“Adodb.connection”)Conn.connectiontimeout=302.ConnectionString

屬性:可設(shè)置或返回用于建立到數(shù)據(jù)源的連接的信息:setconn=Server.CreateObject("ADODB.Connection")conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;datasource="&server.mappath("database.mdb")3.DefaultDatabase

屬性:可設(shè)置或返回一個(gè)字符串值,該值是特定Connection對(duì)象上的默認(rèn)數(shù)據(jù)庫的名稱:setconn=Server.CreateObject("ADODB.Connection")conn.DefaultDatabase="database.mdb"4.Provider屬性:可設(shè)置或返回包含特定Connection對(duì)象的提供者名稱的字符串值。默認(rèn)是(MicrosoftOLEDBproviderforODBC),連接關(guān)閉時(shí)可讀寫:setconn=Server.CreateObject("ADODB.Connection")conn.Provider="Microsoft.Jet.OLEDB.4.0"conn.Open(Server.Mappath("database.mdb"))response.write(conn.Provider)conn.close

5.State屬性:可返回一個(gè)值,為只讀。該值描述對(duì)象的當(dāng)前狀態(tài)是打開、關(guān)閉、正在連接、正在執(zhí)行還是正在檢索數(shù)據(jù)。0:對(duì)象已經(jīng)關(guān)閉1:對(duì)象已經(jīng)打開2:對(duì)象正在連接4:對(duì)象正在執(zhí)行命令8:正在檢索對(duì)象的行8.2.3

Connection對(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ù)。1.Open方法:用于打開與數(shù)據(jù)源的連接,只有調(diào)用了Connection對(duì)象的Open方法后,Connection對(duì)象才會(huì)真正存在,然后才能發(fā)命令對(duì)數(shù)據(jù)源產(chǎn)生作用。語法為:

connection.Open

connectionstring,userID,passwordconnectionstring:可選。一個(gè)包含有關(guān)連接的信息的字符串值。該字符串由一系列被分號(hào)隔開的parameter=value語句組成的。userID:可選。一個(gè)字符串值,包含建立連接時(shí)要使用的用戶名稱。Password:可選。一個(gè)字符串值,包含建立連接時(shí)要使用的密碼。直接將數(shù)據(jù)源連接字符串傳遞給open方法:setconn=Server.CreateObject("ADODB.Connection")str="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath("database.mdb")Conn.Open

str先給Connection對(duì)象的ConnectionString屬性賦值,然后調(diào)用Open方法:setconn=Server.CreateObject("ADODB.Connection")str="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath("database.mdb")conn.connectionString=strconn.OpenAccess數(shù)據(jù)庫直接的連接方法:Setconn=server.createobject(“Adodb.connection”)Conn.open“Driver={MicrosoftAccessDriver(*.mdb)};DBQ=”&server.mappath(“database.mdb”)Access數(shù)據(jù)庫的OLEDB連接方法:setconn=Server.CreateObject("ADODB.Connection")Conn.open"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath("database.mdb")SQLServer的連接方法:setconn=Server.CreateObject("ADODB.Connection")Conn.open“Driver={SQLServer};Server=服務(wù)器名稱;UID=登錄名;PWD=密碼;Database=數(shù)據(jù)庫名稱;”SQLServer數(shù)據(jù)庫的OLEDB連接方法:setconn=Server.CreateObject("ADODB.Connection")Conn.open“Provider=SQLOLEDB.1;DataSource=服務(wù)器名;userID=登錄名;Password=密碼;initialcatalog=數(shù)據(jù)庫名”數(shù)據(jù)庫的DSN連接方法:setconn=Server.CreateObject("ADODB.Connection")Conn.open“DSN=DSN名稱”2.Execute方法:此方法可用于執(zhí)行指定的SQL語句,用于實(shí)現(xiàn)對(duì)數(shù)據(jù)庫表的修改、插入、刪除和查詢等操作。其一般格式有以下兩種:1)執(zhí)行SQL查詢語句時(shí),將返回查詢得到的記錄數(shù)。語法為:

Set對(duì)象變量名=Connection.Execute(“SQL查詢語句”)dimconnSetConn=Server.CreateObject("ADODB.Connection")Conn.open"provider=microsoft.jet.oledb.4.0;datasource="&server.mappath("database.mdb")Setrs=Conn.Execute("SQL語句")2)執(zhí)行操作性語句時(shí),沒有記錄集的返回。語法為:

Connection.Execute

CommandText,RecordsAffected,Optionscommandtext:字符串類型,可以是SQL語句,表名稱,存儲(chǔ)過程等RecordsAffected:操作所影響的記錄個(gè)數(shù)Options:告訴數(shù)據(jù)源commandtext的類型,1表示SQL語句;2表示表名;4表示存儲(chǔ)過程;8表示不清楚;3.Close方法:該方法用于關(guān)閉連接對(duì)象,以釋放所占用的系統(tǒng)資源。Conn.closeSetconn=nothing8.3

RecordSet對(duì)象

除了利用Connection對(duì)象的Execute方法可獲得記錄集外,利用ADO的RecordSet對(duì)象,也可獲得記錄集,且該方法所獲得的記錄集,具有更靈活的控制性和更強(qiáng)的功能。在打開記錄集之前,可以詳細(xì)設(shè)置記錄集的游標(biāo)和鎖定類型,以決定可對(duì)一個(gè)記錄集進(jìn)行怎樣的操作。同時(shí)該對(duì)象提供了一系列的方法和屬性,通過編程可以非常方便的處理記錄集,下面介紹該對(duì)象的應(yīng)用。創(chuàng)建一個(gè)RecordSet對(duì)象實(shí)例,語法如下:

Setrs=Server.CreateObject(“ADODB.RecordSet”)8.3.1

RecordSet對(duì)象的屬性

1.ActiveConnection屬性:通過設(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ì)象。2.Source屬性:可以是一個(gè)Command對(duì)象名稱、一條SQL語句或是一個(gè)指定的數(shù)據(jù)表等。3.CursorType屬性:設(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)告。此外,由其他用戶所做的添加、更改和刪除將是不可見的。4.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開放式批更新,用于立即更新模式相反的批更新模式。5.RecordCount屬性:返回一個(gè)Recordset

對(duì)象中的記錄數(shù)目。6.BOF屬性:如果當(dāng)前的記錄位置在第一條記錄之前,則返回true,否則返回fasle。7.EOF屬性:如果當(dāng)前記錄的位置在最后的記錄之后,則返回true,否則返回fasle。利用該屬性,可防止指針越界而發(fā)生錯(cuò)誤。通常用來作為循環(huán)訪問記錄集結(jié)束的標(biāo)志。8.PageSize屬性:設(shè)置或返回Recordset

對(duì)象的一個(gè)單一頁面上所允許的最大記錄數(shù)。9.PageCount屬性:返回一個(gè)Recordset

對(duì)象中的數(shù)據(jù)頁數(shù)。10.AbsolutePage屬性:設(shè)置或返回一個(gè)可指定Recordset

對(duì)象中頁碼的值。11.AbsolutePosition屬性:設(shè)置或返回一個(gè)值,此值可指定Recordset

對(duì)象中當(dāng)前記錄的順序位置(序號(hào)位置)。該屬性一般是介于1和RecordCount屬性值之間的整數(shù)。8.3.2

RecordSet對(duì)象的方法

1.Open方法:RecordSet對(duì)象中最重要的方法是應(yīng)用Open方法可打開一個(gè)記錄集,其語法如下:記錄集對(duì)象實(shí)例變量.OpenSource,ActiveConnection,CursorType,LockType,Options

Source:該參數(shù)可以是含有一個(gè)SQL字符串、表格、視圖名稱或者存儲(chǔ)過程調(diào)用的字符串ActiveConnection:該參數(shù)可以Connection對(duì)象的實(shí)例名或字符串。CursorType:用來確定服務(wù)器打開Recordset時(shí)應(yīng)該使用的游標(biāo)類型。LockType:用來確定服務(wù)器打開Recordset時(shí)應(yīng)該使用的鎖定類型。Options:該參數(shù)用于指定Source參數(shù)項(xiàng)的命令字符串的類型,其取值與對(duì)應(yīng)的類型與Connection對(duì)象中Execute方法中Options參數(shù)相同constadCmdText=1constadOpenStatic=3constadLockPessimistic=1setconn=Server.CreateObject("ADODB.Connection")conn.Provider="Microsoft.Jet.OLEDB.4.0"conn.Open

server.mappath("database.mdb")fhsql="select*fromstudent"setrs=server.CreateObject("adodb.recordset")rs.open

fhsql,conn,adOpenStatic,adLockReadOnly,adCmdText‘……一些處理語句rs.closeSetrs=nothingconn.close

setconn=nothing2.RecordSet對(duì)象其它方法:

RecordSet對(duì)象提供了如表所示的非常豐富的記錄集方法,通過這些方法可實(shí)現(xiàn)對(duì)記錄集的添加、刪除、修改等各種操作。方

法描

述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é)果或保存的

Recordset

的訪問。Seek搜索

Recordset

的索引以快速定位與指定的值相匹配的行,并使其成為當(dāng)前行。Update保存所有對(duì)

Recordset

對(duì)象中的一條單一記錄所做的更改。UpdateBatch把所有

Recordset

中的更改存入數(shù)據(jù)庫。請(qǐng)?jiān)谂履J街惺褂谩?.5

Errors數(shù)據(jù)集合和Error對(duì)象

當(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ù)集合取得。8.5.1

Errors數(shù)據(jù)集合

所有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ò)誤發(fā)生,則Count等于0,否則大于0。

2.Item屬性:用來訪問Errors集合中每一

溫馨提示

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