版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第7章利用ADO實現(xiàn)數(shù)據(jù)庫
的存取
本章要點Connection對象Recordset對象Command對象Field對象Error對象ASP作為動態(tài)Web應用程序,其開發(fā)Web數(shù)據(jù)庫是其最重要的環(huán)節(jié)。ADO(ActiveXDataObjectsActiveX數(shù)據(jù)對象)是微軟提供的新一代數(shù)據(jù)庫存取訪問技術,ASP內置的ADO組件是數(shù)據(jù)庫開發(fā)的重要工具。應用ADO組件,通過ODBC驅動程序或OLEDB鏈接字符串可實現(xiàn)ASP與數(shù)據(jù)庫之間的連接,通過ADO組件提供的各種方法實現(xiàn)數(shù)據(jù)檢索和數(shù)據(jù)編輯等操作。本章將重點介紹ADO對象的結構和配置,以及各種數(shù)據(jù)訪問對象。本章將詳細介紹ActiveX數(shù)據(jù)對象及其在ASP編程中的應用。8.1ADO簡介ADO對象的主要優(yōu)點是高速、容易使用、占用內存和磁盤空間少,所以非常適合于作為服務器端的數(shù)據(jù)庫訪問技術。ADO對象是多線程的,在出現(xiàn)大量并發(fā)請求時,也同樣可以保持服務器的運行效率,并且通過連接池技術以及對數(shù)據(jù)庫連接資源的完全控制,提供與遠程數(shù)據(jù)庫的高效連接與訪問,同時它還支持事務處理,以開發(fā)高效率、高可靠性的數(shù)據(jù)庫應用程序。ADO結合了OLEDB易于使用的特性以及RDO(RemoteDataObjects遠程數(shù)據(jù)對象)和DAO(DataAccessOjects
數(shù)據(jù)訪問對象)模型中的最好特性,并將它們重新組織在一個對象模型中。ADO包含所有可以被OLEDB標準對象描述的數(shù)據(jù)類型,即ADO對象模型具有擴展性,即使對于那些從來沒有見到過的記錄集的信息格式,只要使用正常的ADO編程對象,就能夠可視化地處理所有的工作,ADO對象模型給開發(fā)人員提供了一種快捷、簡單、高效的數(shù)據(jù)庫訪問方法,可以在腳本中使用ADO對象建立對數(shù)據(jù)庫的連接,并從數(shù)據(jù)庫中讀取記錄,形成需要的對象集合。使用ADO對象建立對數(shù)據(jù)庫的連接有兩種方法:使用面向ODBC驅動器的OLEDB驅動程序建立連接,這種連接與任何有ODBC驅動器的數(shù)據(jù)庫兼容。使用原始的OLEDB驅動程序建立連接。ADO組件由ADODB對象庫構成,ADODB對象庫主要包含3個對象和2個數(shù)據(jù)集合。它們分別是:Connection對象、Recordset對象、Field對象、Fields集合、Error集合。ADO把絕大部分的數(shù)據(jù)庫操作封裝在上述3個對象中,在ASP頁面中編程調用這些對象執(zhí)行相應的數(shù)據(jù)庫操作。8.2
Connection對象Connection對象用來建立數(shù)據(jù)源和ASP程序之間的連接。它代表ASP程序與數(shù)據(jù)源的唯一對話,建立到數(shù)據(jù)源的連接后,可以在此基礎上用RecordSet對象或Command對象對數(shù)據(jù)庫進行查詢、更新、插入、刪除等操作。8.2.1
打開和關閉數(shù)據(jù)庫連接
要實現(xiàn)打開和關閉數(shù)據(jù)庫連接,首先要應用Connection對象創(chuàng)建數(shù)據(jù)連接,因為Connection對象不是ASP內置對象,要使用Connection對象,必須首先顯式地創(chuàng)建它。
<%
Dimconn
Setconn=Server.CreateObject("ADODB.Connection")
%>創(chuàng)建了Connection對象之后,需要打開該連接才能連接到數(shù)據(jù)庫。若使用ODBC進行數(shù)據(jù)源連接,則對應的語法為:
<%cn.Open"DSN=建立的系統(tǒng)DSN名稱"%>Connection對象也可直接連接到Access數(shù)據(jù)庫
<%
Dimconn
SetConn=Server.CreateObject("ADODB.Connection")
Conn.open"provider=microsoft.jet.oledb.4.0;datasource=“&server.
mappath("database.mdb")
%>應用完Connection對象之后,用戶最好關閉并釋放Connection對象,來緩解數(shù)據(jù)庫服務器的壓力。其語法如下:
<%
Conn.close
Setconn=nothing
%>8.2.2
Connection對象的屬性
屬
性含
義ConnectionString包含用來和數(shù)據(jù)源建立連接的字符串。ConnectionTimeOut包含連接到數(shù)據(jù)庫的等待最長時間。如果超過此時間,則認為連接失敗。DefaultDatabase當前連接數(shù)據(jù)源所使用的默認數(shù)據(jù)庫。Provider包含Connection對象的數(shù)據(jù)提供者名稱。State包含Connection對象的當前狀態(tài),返回一個描述連接是打開還是關閉的值。1.ConnectionTimeOut屬性:可設置或返回在終止嘗試和產生錯誤之前打開連接需要等待的秒數(shù)。默認是15秒,語法格式如下:Setconn=server.createobject(“Adodb.connection”)Conn.connectiontimeout=302.ConnectionString
屬性:可設置或返回用于建立到數(shù)據(jù)源的連接的信息:setconn=Server.CreateObject("ADODB.Connection")conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;datasource="&server.mappath("database.mdb")3.DefaultDatabase
屬性:可設置或返回一個字符串值,該值是特定Connection對象上的默認數(shù)據(jù)庫的名稱:setconn=Server.CreateObject("ADODB.Connection")conn.DefaultDatabase="database.mdb"4.Provider屬性:可設置或返回包含特定Connection對象的提供者名稱的字符串值。默認是(MicrosoftOLEDBproviderforODBC),連接關閉時可讀寫: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屬性:可返回一個值,為只讀。該值描述對象的當前狀態(tài)是打開、關閉、正在連接、正在執(zhí)行還是正在檢索數(shù)據(jù)。0:對象已經(jīng)關閉1:對象已經(jīng)打開2:對象正在連接4:對象正在執(zhí)行命令8:正在檢索對象的行8.2.3
Connection對象的方法
方
法描
述Open打開一個數(shù)據(jù)庫的鏈接。Execute該方法可以執(zhí)行SQL語句,并且返回一個RecordSet對象。Close關閉一個已經(jīng)打開的鏈接。BeginTrans開始一個新事務。CommitTrans保存任何更改并結束當前事務。RollbackTrans取消當前事務中所作的任何更改并結束事務。1.Open方法:用于打開與數(shù)據(jù)源的連接,只有調用了Connection對象的Open方法后,Connection對象才會真正存在,然后才能發(fā)命令對數(shù)據(jù)源產生作用。語法為:
connection.Open
connectionstring,userID,passwordconnectionstring:可選。一個包含有關連接的信息的字符串值。該字符串由一系列被分號隔開的parameter=value語句組成的。userID:可選。一個字符串值,包含建立連接時要使用的用戶名稱。Password:可選。一個字符串值,包含建立連接時要使用的密碼。直接將數(shù)據(jù)源連接字符串傳遞給open方法:setconn=Server.CreateObject("ADODB.Connection")str="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath("database.mdb")Conn.Open
str先給Connection對象的ConnectionString屬性賦值,然后調用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=服務器名稱;UID=登錄名;PWD=密碼;Database=數(shù)據(jù)庫名稱;”SQLServer數(shù)據(jù)庫的OLEDB連接方法:setconn=Server.CreateObject("ADODB.Connection")Conn.open“Provider=SQLOLEDB.1;DataSource=服務器名;userID=登錄名;Password=密碼;initialcatalog=數(shù)據(jù)庫名”數(shù)據(jù)庫的DSN連接方法:setconn=Server.CreateObject("ADODB.Connection")Conn.open“DSN=DSN名稱”2.Execute方法:此方法可用于執(zhí)行指定的SQL語句,用于實現(xiàn)對數(shù)據(jù)庫表的修改、插入、刪除和查詢等操作。其一般格式有以下兩種:1)執(zhí)行SQL查詢語句時,將返回查詢得到的記錄數(shù)。語法為:
Set對象變量名=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í)行操作性語句時,沒有記錄集的返回。語法為:
Connection.Execute
CommandText,RecordsAffected,Optionscommandtext:字符串類型,可以是SQL語句,表名稱,存儲過程等RecordsAffected:操作所影響的記錄個數(shù)Options:告訴數(shù)據(jù)源commandtext的類型,1表示SQL語句;2表示表名;4表示存儲過程;8表示不清楚;3.Close方法:該方法用于關閉連接對象,以釋放所占用的系統(tǒng)資源。Conn.closeSetconn=nothing8.3
RecordSet對象
除了利用Connection對象的Execute方法可獲得記錄集外,利用ADO的RecordSet對象,也可獲得記錄集,且該方法所獲得的記錄集,具有更靈活的控制性和更強的功能。在打開記錄集之前,可以詳細設置記錄集的游標和鎖定類型,以決定可對一個記錄集進行怎樣的操作。同時該對象提供了一系列的方法和屬性,通過編程可以非常方便的處理記錄集,下面介紹該對象的應用。創(chuàng)建一個RecordSet對象實例,語法如下:
Setrs=Server.CreateObject(“ADODB.RecordSet”)8.3.1
RecordSet對象的屬性
1.ActiveConnection屬性:通過設置RecordSet對象的ActiveConnection屬性可以使Recordset對象與特定的Connection對象相關聯(lián),ActiveConnection屬性可以是一個Connection對象名稱或是一個包含數(shù)據(jù)源連接信息的字符串,如果連接被關閉,設置或返回連接的定義,如果連接打開,設置或返回當前的Connection對象。2.Source屬性:可以是一個Command對象名稱、一條SQL語句或是一個指定的數(shù)據(jù)表等。3.CursorType屬性:設置或返回一個Recordset
對象的游標類型。在ADO中,定義了4種不同的游標(指針)類型。符號常量值含
義AdOpenForwardOnly0默認值,僅向前游標,只允許在
Recordset
中向前滾動。此外,由其他用戶所做的添加、更改和刪除將是不可見的。adOpenKeyset1鍵集游標,允許用戶看到其他用戶所做的數(shù)據(jù)更改。但不能看到其他用戶添加和刪除的記錄。
adOpenDynamic2動態(tài)游標,用戶可以看到其他用戶所作的添加、更改和刪除
。adOpenStatic3靜態(tài)游標,提供記錄集的靜態(tài)副本,可用來查找數(shù)據(jù)或生成報告。此外,由其他用戶所做的添加、更改和刪除將是不可見的。4.LockType屬性:設置或返回當編輯Recordset
中的一條記錄時,可指定鎖定類型的值。符號常量值含
義adLockReadOnly0默認值。以只讀模式打開,故不能更新、插入或刪除記錄集中的記錄。adLockPessimistic1保守式記錄鎖定。在編輯修改一個記錄時,立即鎖定它,以防止其他用戶對其進行操作。最安全的鎖定機制。adLockOptimistic2開放式記錄鎖定。在編輯修改記錄時,并未加鎖,只有在調用記錄集的Update方法更新記錄時,才鎖定記錄。adLockBatchOptimistic3開放式批更新,用于立即更新模式相反的批更新模式。5.RecordCount屬性:返回一個Recordset
對象中的記錄數(shù)目。6.BOF屬性:如果當前的記錄位置在第一條記錄之前,則返回true,否則返回fasle。7.EOF屬性:如果當前記錄的位置在最后的記錄之后,則返回true,否則返回fasle。利用該屬性,可防止指針越界而發(fā)生錯誤。通常用來作為循環(huán)訪問記錄集結束的標志。8.PageSize屬性:設置或返回Recordset
對象的一個單一頁面上所允許的最大記錄數(shù)。9.PageCount屬性:返回一個Recordset
對象中的數(shù)據(jù)頁數(shù)。10.AbsolutePage屬性:設置或返回一個可指定Recordset
對象中頁碼的值。11.AbsolutePosition屬性:設置或返回一個值,此值可指定Recordset
對象中當前記錄的順序位置(序號位置)。該屬性一般是介于1和RecordCount屬性值之間的整數(shù)。8.3.2
RecordSet對象的方法
1.Open方法:RecordSet對象中最重要的方法是應用Open方法可打開一個記錄集,其語法如下:記錄集對象實例變量.OpenSource,ActiveConnection,CursorType,LockType,Options
Source:該參數(shù)可以是含有一個SQL字符串、表格、視圖名稱或者存儲過程調用的字符串ActiveConnection:該參數(shù)可以Connection對象的實例名或字符串。CursorType:用來確定服務器打開Recordset時應該使用的游標類型。LockType:用來確定服務器打開Recordset時應該使用的鎖定類型。Options:該參數(shù)用于指定Source參數(shù)項的命令字符串的類型,其取值與對應的類型與Connection對象中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對象其它方法:
RecordSet對象提供了如表所示的非常豐富的記錄集方法,通過這些方法可實現(xiàn)對記錄集的添加、刪除、修改等各種操作。方
法描
述AddNew創(chuàng)建一條新記錄。Close關閉一個
Recordset。Delete刪除一條記錄或一組記錄。Find搜索一個
Recordset
中滿足指定某個條件的一條記錄。GetRows把多條記錄從一個
Recordset
對象中拷貝到一個二維數(shù)組中。GetString將
Recordset
作為字符串返回。Move在
Recordset
對象中移動記錄指針。MoveFirst把記錄指針移動到第一條記錄。MoveLast把記錄指針移動到最后一條記錄。MoveNext把記錄指針移動到下一條記錄。MovePrevious
把記錄指針移動到上一條記錄。
Open打開一個數(shù)據(jù)庫元素,此元素可提供對表的記錄、查詢的結果或保存的
Recordset
的訪問。Seek搜索
Recordset
的索引以快速定位與指定的值相匹配的行,并使其成為當前行。Update保存所有對
Recordset
對象中的一條單一記錄所做的更改。UpdateBatch把所有
Recordset
中的更改存入數(shù)據(jù)庫。請在批更新模式中使用。8.5
Errors數(shù)據(jù)集合和Error對象
當ADO對象的操作產生錯誤時,會有一個或多個Error對象被放到Connection對象的Errors集合中;據(jù)此,可獲得產生錯誤的原因和來源,以便采取適當?shù)拇胧?,使程序更加完善。Error對象可通過建立的Connection對象的Errors數(shù)據(jù)集合取得。8.5.1
Errors數(shù)據(jù)集合
所有Error對象的集合用來響應一個連接(Connection)上的錯誤。Errors數(shù)據(jù)集合包括兩個屬性:Count和Item。
1.Count屬性:用來指示集合中有多少個Error對象,應用語法為:
long=Errors集合變量.count。Errors集合的屬性Count可以獲得數(shù)據(jù)庫是否發(fā)生了錯誤,如果沒有錯誤發(fā)生,則Count等于0,否則大于0。
2.Item屬性:用來訪問Errors集合中每一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 吉首大學《分布式與并行計算》2021-2022學年期末試卷
- 《機械設計基礎》期末考試試卷九
- 吉林藝術學院《數(shù)字交互藝術概論》2021-2022學年第一學期期末試卷
- 2024年供銷合同范本超市
- 吉林師范大學《中國畫論》2021-2022學年第一學期期末試卷
- 吉林師范大學《虛擬現(xiàn)實引擎技術》2021-2022學年期末試卷
- 2024年大棚蔬菜苗售賣合同范本
- 簽字離婚后續(xù)簽協(xié)議書范文模板
- 2022年江西省公務員錄用考試《申論》真題(行政執(zhí)法類卷)及答案解析
- 2022 年廣東省公務員錄用考試《申論》真題(縣級卷)及答案解析
- 7逆合成分析法與合成路線設計
- 工程材料構配件設備報審表
- 《Monsters 怪獸》中英對照歌詞
- 華東地區(qū)SMT公司信息
- 平面構成作品欣賞
- 隧道棄渣及棄渣場處理方案
- 隔代教育PPT課件
- 簽證用完整戶口本英文翻譯模板
- 金屬鹽類溶度積表
- 社會工作畢業(yè)論文(優(yōu)秀范文8篇)
- 醫(yī)學交流課件:抗腫瘤化療藥物所致的神經(jīng)毒性診治
評論
0/150
提交評論