當(dāng)前位置:首頁文章首頁 IT學(xué)院 IT技術(shù)

ASP中數(shù)據(jù)庫知識(shí)學(xué)習(xí)

作者:  來源:  發(fā)布時(shí)間:2011-6-4 9:37:45  點(diǎn)擊:
本文章提供的是ASP中的數(shù)據(jù)庫基礎(chǔ)知識(shí)的學(xué)習(xí),不管大家都知不知道,我們還是一起來還溫習(xí)鞏固一下把。
一、 ADO概述
ADO(ActiveX Data Object)是一組優(yōu)化的訪問數(shù)據(jù)庫的專用對象集,它為ASP提供了完整的站點(diǎn)數(shù)據(jù)庫訪問解決方案。ADO對象在服務(wù)器端執(zhí)行,并向客戶端提供含有數(shù)據(jù)庫信息的內(nèi)容,客戶端也可以根據(jù)指定的權(quán)限返回參數(shù)來對數(shù)據(jù)庫進(jìn)行讀寫等操作。ADO的特點(diǎn)就是執(zhí)行速度快、使用簡單、低內(nèi)存消耗且占用硬盤空間小。

因?yàn)锳DO是通過ODBC來對數(shù)據(jù)庫進(jìn)行訪問的,所以它可以連接各種支持ODBC的數(shù)據(jù)庫,如Access、SQL Server、Oracle、Informix等。在使用ADO之前要先在ODBC中添加相應(yīng)的數(shù)據(jù)庫驅(qū)動(dòng)程序,并創(chuàng)建相應(yīng)的DSN(數(shù)據(jù)源名)。ADO 中包含許多對象,其中Connection對象和Recordset對象主要用于控制數(shù)據(jù)庫存取,要建立一次數(shù)據(jù)庫訪問首先要?jiǎng)?chuàng)建一個(gè) Connection對象,然后用基于這個(gè)Connection對象的Recordset對象來完成對數(shù)據(jù)庫從操作。



二、 Connection對象
Connection對象代表了一個(gè)打開的同OLE DB數(shù)據(jù)源的連接,它有點(diǎn)類似于client/server數(shù)據(jù)庫應(yīng)用中同Server間的真實(shí)網(wǎng)絡(luò)連接,我們可以獨(dú)立于任何其它對象建立一個(gè) Connection對象。注意,在引用一個(gè)Connection之前首先要?jiǎng)?chuàng)建這個(gè)Connection對象,其語法如下,其中connection為引用該Connection對象的變量:Setconnection=Server.CreatObject(“ADODB.Connetcion”)

Connection對象中包含有多個(gè)屬性,下面是幾個(gè)常用的屬性,注意只能在創(chuàng)建Connection對象之后且該對象被打開前改變其屬性。語法如:Connection.屬性=屬性值

1. ConnectionString一個(gè)包含連接信息的字符串,將一個(gè)“DSN名” 或是一個(gè)由“argument = value”組成的字符串傳遞給ConnectionString屬性,可以為Connection對象指定一個(gè)數(shù)據(jù)源,此屬性可以在連接打開前設(shè)置,也可以在“Open”命令中設(shè)置。ADO中的argument有以下幾個(gè):
 
  參數(shù) 描述
  Provider 該Connection對象的創(chuàng)建者,默認(rèn)值為MSDASQL (Microsoft ODBC Provider for OLE DB)
  Data Source 指定該Connection的ODBC數(shù)據(jù)源(DSN)
  User 設(shè)置打開該連接的用戶名
  Password 設(shè)置打開該連接時(shí)所需要的密碼
  File Name 由創(chuàng)建者指定的包含該Connection信息的文件
  
2. Mode
  可以設(shè)置為以下常量的參數(shù),用來設(shè)置用戶對當(dāng)前連接的訪問權(quán)限。
  常量 值 含義
  adModeUnknown 0 未設(shè)置對數(shù)據(jù)庫的操作權(quán)限(默認(rèn))
  adModeRead 1 只讀
  adModeWrite 2 只寫
  adModeReadWrite 3 可以讀寫
  adModeShareDenyRead 4 禁止對數(shù)據(jù)源建立其它的只讀連接
  adModeShareDenyWrite 8 禁止對數(shù)據(jù)源建立其它的只寫連接
  adModeShareExclusive 12 禁止對數(shù)據(jù)源建立其它的讀/寫連接
  adModeShareDenyNone 16 禁止對數(shù)據(jù)源建立其它的任何連接
  
3. ConnectionTimeout 指定等待建立連接的時(shí)間,若超時(shí)則中斷請求并給出錯(cuò)誤信息。等待時(shí)間以秒為單位,可以將一個(gè)整數(shù)值賦給這個(gè)參數(shù),默認(rèn)值是15秒。設(shè)置 ConnectionTimeout屬性可以在網(wǎng)絡(luò)擁擠或服務(wù)器忙時(shí)給出提示,防止無休止的等待。若將ConnectionTimeout的值設(shè)置為0,則系統(tǒng)一直等待直到連接建立成功。

4. CommandTimeout 指定當(dāng)執(zhí)行“Execute”命令時(shí)的等待時(shí)間,若超時(shí)則中斷請求并給出錯(cuò)誤信息。等待時(shí)間以秒為單位,可以將一個(gè)整數(shù)值賦給這個(gè)參數(shù),默認(rèn)值是30秒。使用Connection對象的Open、Close和Execute方法可以完成從建立數(shù)據(jù)庫連接,到操縱數(shù)據(jù)庫和最后關(guān)閉連接的所有數(shù)據(jù)庫訪問動(dòng)作。

. Open Open方法打開Connection對象同數(shù)據(jù)源之間的物理連接,語法如下:
   connection. Open ConnectionString,UserID, Password
   connection 代表一個(gè)對象變量,用于引用已經(jīng)存在的Connection對象。
   ConnectionString 可選變量,含義同前面提到的ConnectionString屬性。
   UserID 可選變量,是一個(gè)包含建立連接時(shí)使用的用戶名的字符串。
   Password 可選變量,是一個(gè)包含建立連接時(shí)所使用的密碼的字符串。
  
. Close 用Close方法可以關(guān)閉一個(gè)已經(jīng)打開的Connection對象,但是此時(shí)該Connection對象并沒有被從內(nèi)存中刪除,我們還可以改變它的屬性參數(shù)或是打開這個(gè)對象,若要真正釋放該對象占用的內(nèi)存空間需要將這個(gè)對象設(shè)置為“Nothing”。如果基于此Connection對象還打開了其它的 RecordSet對象,在關(guān)閉Connection對象的同時(shí)會(huì)關(guān)閉所有相關(guān)的recordSet對象。

. Execute 使用Execute可以根據(jù)已經(jīng)打開的Connection對象執(zhí)行SQL語句或一個(gè)存儲(chǔ)過程,并可以用一個(gè)RecordSet對象指向得出的結(jié)果集合。Execute命令的語法如下:
  connection.Execute CommandText, RecordsAffected, Options
  CommandText 字符串,包含將要執(zhí)行的SQL語句、表名或存儲(chǔ)過程。
  RecordsAffected 可選參數(shù),一個(gè)長整型變量,操縱執(zhí)行完后,其返回值為該操縱影響的記錄的數(shù)量。
  Options 可選參數(shù),描述CommandText中包含何種操縱參數(shù),有以下可用值:
  
常量 值 含義
  adCmdText 1 CommandText是一個(gè)用SQL語句描述的命令
  adCmdTable 2 CommandText是一個(gè)表名
  adCmdStoredProc 4 CommandText是一個(gè)存儲(chǔ)過程
  adCmdUnknown 8 CommandText是一個(gè)未知的命令類型
  
使用Connection對象的各種方法可以完成對數(shù)據(jù)庫的各種訪問動(dòng)作,比如添加、刪除、更新和選取等操作。
  

三、 Recordset對象

雖然使用Execute方法已經(jīng)可以實(shí)現(xiàn)對數(shù)據(jù)庫的各種操作,但是在編程中我們更常用的還是RecordSet對象,ADO中的內(nèi)建對象 RecordSets是數(shù)據(jù)庫訪問的主要接口,它指向數(shù)據(jù)表中的一個(gè)記錄集,它有點(diǎn)類似于C語言中指針的概念,在任何時(shí)刻一個(gè)RecordSets對象只能指向一條記錄。

Recordset對象提供了許多方法和屬性來方便對數(shù)據(jù)庫的操作,下面是一些常用的Recordset方法及屬性。
* CursorType 應(yīng)該在Recordset對象打開之前設(shè)置這個(gè)屬性,它決定了Recordset的游標(biāo)類型,CursorType可以為以下值:
  常量 值 含義
  adOpenStatic 3 靜態(tài)游標(biāo),它是所訪問的記錄集的拷貝,看不到其它用戶對數(shù)據(jù)庫的修改
  AdOpenDynamic 2 動(dòng)態(tài)游標(biāo),可以看到其它用戶對數(shù)據(jù)庫的添加、刪除和修改等操作,允許 游標(biāo)向前或向后移動(dòng)
  adOpenKeyset 1 關(guān)鍵字游標(biāo),與動(dòng)態(tài)游標(biāo)相同,但是只能看到其它用戶對數(shù)據(jù)庫的更新, 看不到添加和刪除結(jié)果
  adOpenForwardOnly 0 向前游標(biāo),同靜態(tài)游標(biāo)相同,但是游標(biāo)只能向前移動(dòng)
  

* BOF Recordset屬性,在當(dāng)前Recordset對象指向記錄集中的第一條記錄之前時(shí)BOF返回值為True(-1),反之為False(0)。
* EOF Recordset屬性,當(dāng)當(dāng)前Recordset對象指向記錄集中的最后一條記錄之后BOF返回值為True(-1),反之為False(0)。
* RecordCount Recordset屬性,RecordCount返回值為一個(gè)long型值,等于記錄集中記錄的數(shù)量。
* Open 在使用Recordset對象之前首先要用Open方法打開一個(gè)指向記錄集合的游標(biāo),其語法如下: recordset.Open Source, ActiveConnection, CursorType, LockType, Options
  recordset: Recordset對象變量
  Source: 可選參數(shù),用于選取記錄集,可以是SQL語句、表名或存儲(chǔ)過程
  ActiveConnection: 可選參數(shù),一個(gè)變量代表一個(gè)打開的Connection對象
  CursorType :可選參數(shù),指定游標(biāo)類型,默認(rèn)值為“0”
  LockType 可選參數(shù),指定編輯記錄集時(shí)的鎖的類型如下:
  
常量 值 含義
  AdLockReadOnly 1 只讀,不可修改記錄集
  AdLockPessimistic 2 當(dāng)編輯記錄集時(shí)鎖定數(shù)據(jù)庫,禁止其它用戶訪問
  AdLockOptimistic 3 只有使用Update方法時(shí)才鎖定數(shù)據(jù)庫
  AdLockBatchOptimistic 4 只有使用UpdateBatch方法時(shí)才鎖定數(shù)據(jù)庫
  
Option: 可選參數(shù),同Connection的Open方法中的Option參數(shù)。
  注意:在使用Recordset對象時(shí)可以不建立Connection對象,而是在Open方法中直接傳遞連接參數(shù),事實(shí)上這種情況下ADO還是創(chuàng)建了一個(gè)Connection對象,只是并不把它指派給對象變量。但是如果要用一個(gè)Connection對象建立多個(gè)Recordset對象,就必須建立對象并把它指派給一個(gè)Connection對象變量。
  
* AddNew 新建并初始化一個(gè)新記錄,并將RecordSet游標(biāo)指向該記錄。
* Delete 刪除游標(biāo)指向的當(dāng)前記錄。

文章評論

軟件按字母排列: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z