ADO三大對象的屬性、方法、事件及常數(shù)(一)

 

Connection對象

屬性

屬性名稱 數(shù)據(jù)類型和用途
Attributes 可讀寫Long類型,通過兩個常數(shù)之和指定是否使用保留事務(wù)(retainning transactions)。常數(shù)adXactCommitRetaining表示調(diào)用CommitTrans方法時啟動一個新事務(wù);常數(shù)adXactAbortRetaning表示調(diào)用RollbackTrans方法時啟動一個新事務(wù)。默認值為0,表示不使用保留事務(wù)。
CommandTimeout 可讀寫Long類型,指定中止某個相關(guān)Command對象的Execute調(diào)用之前必須等待的時間。默認值為30秒。
ConnectionString 可讀寫String類型,提供數(shù)據(jù)提供者或服務(wù)提供者打開到數(shù)據(jù)源的連接所需要的特定信息
ConnectionTimeout 可讀寫Long類型,指定中止一個失敗的Connection.Open方法調(diào)用之前必須等待的時間,默認值為15秒。
CursorLocation 可讀寫Long類型,確定是使用客戶端(adUseClient)游標(biāo)引擎,還是使用服務(wù)器端(adUseServer)游標(biāo)引擎。默認值是adUseServer。
DefaultDatabase 可讀寫String類型,如果ConnectString中未指定數(shù)據(jù)庫名稱,就使用這里所指定的名稱,對SQL Server而言,其值通常是pubs
IsolationLevel 可讀寫Long類型,指定和其他并發(fā)事務(wù)交互時的行為或事務(wù)。見IsolationLevel常數(shù)
Mode Long類型,指定對Connection的讀寫權(quán)限。見Mode常數(shù)
Provider 可讀寫String類型,如果ConnectionString中未指定OLE DB數(shù)據(jù)或服務(wù)提供者的名稱,就使用這時指定的名稱。默認值是MSDASQL(Microsoft OLE DB Provider for ODBC)。
State 可讀寫Long類型,指定連接是處于打開狀態(tài),還是處于關(guān)閉狀態(tài)或中間狀態(tài)。見State常數(shù)
Version 只讀String類型,返回ADO版本號。

注意:上面所列出的大多數(shù)可讀寫的屬性,只有當(dāng)連接處于關(guān)閉狀態(tài)時才是可寫的。

只有當(dāng)用戶為Connection對象用BeginTrans...CommitTrans...RollbackTrans方法定義了不遺余力,事務(wù)隔離程度的指定才真正有效。如果有多個數(shù)據(jù)庫用戶同時執(zhí)行事務(wù),那么應(yīng)用程序中必須指定如何響應(yīng)運行中的其他事務(wù)。

方法

方法 用途
BeginTrans 初始化一個事務(wù);其后必須有CommitTrans和/或RollbackTrans相呼應(yīng)
Close 關(guān)閉連接
CommitTrans 提交一個事務(wù),以完成對數(shù)據(jù)源的永久改變(要求使用之前必須調(diào)用了BeginTrans方法)
Execute 人SELECT SQL語句返回一個forward-only Recordset對象,也用來執(zhí)行那些不返回Recordset語句,如INSERT、UPDATE、DELETE查詢或DDL語句
Open 用連接字符串來打開一個連接
OpenSchema 返回一個Recordset對象以提供數(shù)據(jù)源的結(jié)構(gòu)信息(metadata)
RollbackTrans 取消一個事務(wù),恢復(fù)對數(shù)據(jù)源做的臨時性改變(要求使用之前必須調(diào)用了BeginTrans方法)

注:只有Execute、Open和OpenSchema三個方法才能接受變元參數(shù)。Execute的語法為:
cnnName.Execute strCommand,[lngRowsAffected[,lngOptions]]
strCommand的值可以是SQL語句、表名、存儲過程名,也可以是數(shù)據(jù)提供者所能接受的任意字符串。為了提高性能,最好為lngOptions參數(shù)指定合適的值(詳見lngOptions參數(shù)用到的常數(shù)),以使提供者解釋語句時不用再去判定其類型?蛇x參數(shù)lngRowsAffected將返回INSERT、UPDATE或DELETE查詢執(zhí)行以后所影響的數(shù)目。這些查詢會返回一個關(guān)閉的Recordset對象。一個SELECT查詢將返回lngRowsAffected值為0并且返回帶有一行或多行內(nèi)容的打開的forward-only Recordset。

事件

事件名稱 觸發(fā)時機
BeginTransComplete BeginTrans方法執(zhí)行以后。
Private Sub cnnName_BeginTransComplet(ByVal TransactionLevel As Long,ByVal pError As ADODB.Error,adStatus As ADODB.EventStatusEnum, ByVal pConnection As ADODB.Connection)
CommitTransComplete CommitTrans方法執(zhí)行以后
Private Sub Connection1_CommitTransComplete(ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pConnection As ADODB.Connection) 
ConnectComplete 成功建立到數(shù)據(jù)源的Connection之后
Private Sub Connection1_ConnectComplete(ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pConnection As ADODB.Connection) 
Disconnect Connection關(guān)閉之后
Private Sub Connection1_Disconnect(adStatus As ADODB.EventStatusEnum, ByVal pConnection As ADODB.Connection) 
ExecuteComplete 完成Connection.Execute或Command.Execute之時
Private Sub Connection1_ExecuteComplete(ByVal RecordsAffected As Long, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection) 
InfoMessage 一個Error對象被添加到ADODB.Connectio.Error集合之時
Private Sub Connection1_InfoMessage(ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pConnection As ADODB.Connection) 
RollbackTransComplete RollbackTrans方法執(zhí)行之后
Private Sub Connection1_RollbackTransComplete(ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pConnection As ADODB.Connection) 
WillConnect 即將調(diào)用Connection.Open方法之時
Private Sub Connection1_WillConnect(ConnectionString As String, UserID As String, Password As String, Options As Long, adStatus As ADODB.EventStatusEnum, ByVal pConnection As ADODB.Connection) 
WillExecute 即將調(diào)用Connection.Execute或Command.Execute方法之時
Private Sub Connection1_WillExecute(Source As String, CursorType As ADODB.CursorTypeEnum, LockType As ADODB.LockTypeEnum, Options As Long, adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection) 

注:其中的adStatus參數(shù)所用到的常數(shù)的名稱和含義詳見adStatus所用的常數(shù)

常數(shù)

IsolationLevel常數(shù)

常數(shù) 含義
adXactCursorStability 只允許讀其他事務(wù)已提交的改變(默認值)
adXactBrowse 允許讀其他事務(wù)未提交的改變
adXactChaos 本事務(wù)不會覆蓋其他位于更高隔離程度的事務(wù)所做的改變
adXactIsolated 所有事務(wù)相互獨立
adXactReadCommitted 等同于adXactCursorStability
adXactReadUncommitted 等同于adXactBrowse
adXactRepeatableRead 禁止讀其他事務(wù)的改變
adXactSerializable 等同于adXactIsolated
adXactUnspecified 不能確定提供者的事務(wù)隔離程度

Mode常數(shù)

常數(shù) 含義
adModeUnknown 未指定數(shù)據(jù)源的連接許可權(quán)(默認值)
adModeRead 連接是只讀的
adModeReadWrite 連接是可讀寫的
adModeShareDenyNone 不拒絕其他用戶的讀寫訪問(Jet OLE DB Provider的默認值)
adModeShareDenyRead 拒絕其他用戶打開到數(shù)據(jù)源的讀連接
adModeShareDenyWrite 拒絕其他用戶打開到數(shù)據(jù)源的寫連接
adModeShareExclusive 以獨占方式打開數(shù)據(jù)源
adModeWrite 連接是只寫的

State常數(shù)

常數(shù) 含義
adStateClosed Connection(或其他對象)是關(guān)閉的(默認值)
adStateConnecting 正在連接數(shù)據(jù)源的狀態(tài)
adStateExecuting Connection或Command對象的Execute方法已被調(diào)用
adStateFetching 返回行(row)到Recordset對象
adStateOpen Connection(或其他對象)是打開的(活動的)

Execute方法中l(wèi)ngOption參數(shù)用到的常數(shù)

Command類型常數(shù) 含義
adCmdUnknown Command類型未定(默認值),由數(shù)據(jù)提供者去判別Command語法
adCmdFile Command是和對象類型相應(yīng)的文件名稱
adCmdStoredProc Command是存儲過程名稱
adCmdTable Command是能產(chǎn)生內(nèi)部SELECT * FROM TableName查詢的表名稱
adCmdTableDirect Command是能直接從表中獲取行內(nèi)容的表名稱
adCmdText Command是一條SQL語句

ADODB事件處理子過程參數(shù)adStatus所用的常數(shù)

常數(shù) 含義
adStatusCancel 操作被用戶取消
adStatusCnatDeny 操作不能拒絕其他用戶對數(shù)據(jù)源的訪問
adStatusErrorsOccurred 操作導(dǎo)致錯誤并已送到Errors集合中
adStatusOK 操作成功
adStatusUnWantedEvent 操作過程中一個未預(yù)料到的事件被激活 

ADO三大對象的屬性、方法、事件及常數(shù)(二)

 

Command對象

Command對象的主要目的是執(zhí)行參數(shù)化的存儲過程。其形式要么是臨時準(zhǔn)備(prepared),要么是持久的預(yù)編譯(precompiled)過的SQL語句。如果想(存儲)一個或多個查詢以供在同一Connection上多次執(zhí)行,Command對象也是很有用的。當(dāng)想創(chuàng)建Recordset時,一種高效的方法是繞過Command對象而采用Recordset.Open方法。

屬性

屬性名稱 數(shù)據(jù)類型和用途
ActiveConnection 指針類型,指向Command所關(guān)聯(lián)的Connection對象。對于現(xiàn)存的已打開連接,可使用Set cmmName.ActiveConnection=cnnName。另外,也可以不用相關(guān)Connection對象名稱而使用有效的連接字符串去創(chuàng)建一個新的連接。默認值為Null。 
CommandText 可讀寫String類型。為ActiveConnection指定一條SQL語句、表名、存儲過程名或提供者能接受的任意字符串。CommandType屬性的值決定了CommandText屬性值的格式。默認值為空字符串:""
CommandTimeout 可讀寫Long類型,指定中止一個Command.Execute調(diào)用之前必須等待的時間。這時的值優(yōu)先于Connection.ComandTimeout中的設(shè)定值。默認值為30秒。
CommandType 可讀寫Long類型,指定數(shù)據(jù)提供者該如何解釋CommandText屬性值。CommandType等效于Connection.Execute方法中的可選參數(shù)lngOption。詳見CommandType所用到的常數(shù)。默認值為adCmdUnkown.
Name 可讀寫String類型,指定Command的名稱。
Prepared 可讀寫B(tài)oolean類型,判斷數(shù)據(jù)源是否把CommandText中的SQL語句編譯為prepared statement(一種臨時性存儲過程)。prepared statement僅存活于Command的ActiveConnection生命周期中。許多客戶/服務(wù)器RDBMS,包括SQL SERVER,都支持prepared statement。如果數(shù)據(jù)源不支持prepared statement,則把該屬性設(shè)為True,將導(dǎo)致一個自陷錯誤。
State 可讀寫Long類型,指定Commnad狀態(tài)。見State常數(shù)。

注意:最好每次都為CommandType指定的一個合適的常數(shù)值,否則會降低系統(tǒng)運行的效率。

方法

方法 用途
Createparameter 在執(zhí)行該方法之前,必須首先聲明一個ADODB.Parameter對象。調(diào)用語法為:
cmmName.CreateParameter [strName[,lngType[,lngDirection[,lngSize[,varValue]]]]]
Execute 調(diào)用語法同Connection.Execute大致相同。

常數(shù)

State常數(shù)

常數(shù) 含義
adStateClosed Connection(或其他對象)是關(guān)閉的(默認值)
adStateConnecting 正在連接數(shù)據(jù)源的狀態(tài)
adStateExecuting Connection或Command對象的Execute方法已被調(diào)用
adStateFetching 返回行(row)到Recordset對象
adStateOpen Connection(或其他對象)是打開的(活動的)

CommandType所用到的常數(shù)

Command類型常數(shù) 含義
adCmdUnknown Command類型未定(默認值),由數(shù)據(jù)提供者去判別Command語法
adCmdFile Command是和對象類型相應(yīng)的文件名稱
adCmdStoredProc Command是存儲過程名稱
adCmdTable Command是能產(chǎn)生內(nèi)部SELECT * FROM TableName查詢的表名稱
adCmdTableDirect Command是能直接從表中獲取行內(nèi)容的表名稱
adCmdText Command是一條SQL語句 

ADO三大對象的屬性、方法、事件及常數(shù)(三)

 

Recordset對象

屬性

屬性名稱 數(shù)據(jù)類型和用途
AbsolutePage 可讀寫Long類型,要么是設(shè)置或返回當(dāng)前記錄所處的頁面序號,要么是一個PositionEnum常數(shù),見AbsolutePage用到的常數(shù)。在獲取或設(shè)置AbsolutePage的值之前,必須先設(shè)定PageSize的值。AbsolutePage是從1開始計數(shù)的。如果當(dāng)前記錄位于第一頁時,AbsolutePage的返回值為1,對AbsolutePage設(shè)置將使當(dāng)前記錄指針指向指定頁的第一條記錄。
AbsolutePosition* 可讀寫的Long類型(從1開始計數(shù)),設(shè)置或返回當(dāng)前記錄年處的位置。AbsolutePosition的最大取值是RecordCount屬性的值。
ActiveCommand 可讀寫的String類型,Recordset所關(guān)聯(lián)的先前打開的Command對象名稱
ActiveConnection 指針類型,指向Recordset所關(guān)聯(lián)的先前打開的Connection對象,或指向一條完整有效的ConnectionString串值。

BOF* 只讀Boolean類型,若為True,表明記錄指針已位于Recordset第一條記錄之前,并且沒有了當(dāng)前記錄
Bookmark* 可讀寫Variant類型,返回對特定記錄的引用或使用一個Bookmark值使記錄指針指向特定記錄
CacheSize* 可讀寫Long類型,指定本地Cache中所存的記錄條數(shù),最小(默認值)為1。若增加了CacheSize的值,則在流動Recordset以獲取更多記錄時,能減少與服務(wù)器的通信次數(shù)。
CursorLocation 可讀寫Long類型,指定可流動游標(biāo)的位置,即CursorType是位于客戶端還是位于服務(wù)器端,見CursorLocation用到的常數(shù)。默認值是使用OLE DB數(shù)據(jù)源提供的游標(biāo)。 
CusrsorType* 可讀寫Long類型,指定Recordset游標(biāo)的類型,見CursorType用到的常數(shù),默認值是forward-only游標(biāo)
DataMember 指針類型,指向關(guān)聯(lián)的DataEnvironment.Command對象
DataSource 指針類型,指向關(guān)聯(lián)的DataEnvironment.Connection對象
EditMode* 只讀Long類型,返回Recordset的編輯狀態(tài),見EditMode用到的常數(shù)
EOF* 只讀Boolean類型,若為True,表明記錄指針已超出Recordset的最后一條記錄,并且沒有了當(dāng)前記錄。
Filter* 可讀寫Variant類型,要么是一條件表達式(一條有效的SQL WHERE子句但又不出現(xiàn)保留字WHERE),要么是指向特定記錄的Bookmark數(shù)組,要么是一個Filter常數(shù),詳見Filter用到的常數(shù)。 
LockType* 可讀寫Long類型,指定打開Recordset所使用的記錄鎖定方法。默認值是只讀,對應(yīng)于forward-only游標(biāo)的只讀特性。見LockType屬性用到的常數(shù)。
MarshalOptions 可讀寫Long類型,指定客戶端改動后,應(yīng)返回哪個記錄集合,此屬性僅適合于不常見的ADOR.Recordset對象,此對象是RDS.ADOR.Recordset對象成員之一。
MaxRecords* 可讀寫Long類型,指定SELECT查詢或存儲過程返回的最大記錄條數(shù),默認值為0,即全部返回
PageCount 只讀Long類型,返回Recordset所有的頁數(shù),必須設(shè)定了PageSize的值,PageCount的返回值才是真正有意義的。如果Recordset不支持PageCount屬性,則返回值為-1
PageSize 可讀寫Long類型,設(shè)置或返回一個邏輯頁所包含的記錄條數(shù)。使用邏輯頁可把大的Recordset分解為多個易處理的小部分。通常的做法是把PageSize設(shè)為DataGrid、MsFlexGrid或?qū)哟涡偷腇lexGrid控件所能顯示的記錄條數(shù)。PageSize和鎖定Jet(2k)或鎖定SQL Server(6.5版及更早版本,2k;7.0版,8k)數(shù)據(jù)庫時用到的表頁面大小無關(guān) 
PersistFormat 可讀寫Long類型,設(shè)置或返回由調(diào)用Save方法所創(chuàng)建的Recordset文件的格式。當(dāng)前僅有一個值adPersistADTG(默認格式:Advanced Data TableGram)
RecordCount* 只讀Long類型,如果Recordset支持近似定位或支持書簽,則返回帶可流動游標(biāo)的Recordset所含有的記錄數(shù);如果不支持,必須使用MoveLast方法以取得確實覆蓋了所有記錄的準(zhǔn)確的RecordCount數(shù)值。如果forward-only類型Recordset有一條或多條記錄,Recordset返回-1(True),任何類型的空的Recordset都將返回0(False)
Sort* 可讀寫String類型,包含一條不含保留字ORDER BY的SQL ORDERY BY子句,用以指定Recordset的排序方式
Source* 可讀寫String類型,可以是SQL語句、表名、存儲過程名或相關(guān)Command對象名。如果提供了Command對象名,則Source將返回Command.CommandText的值。利用Open方法的參數(shù)lngOptions可以指定提供給Source值的類型 
State 可讀寫Long類型,為對象狀態(tài)常數(shù)之一。見State常數(shù)
Status 只讀Long類型,表明對Recordset進行批處理或其他多記錄(bulk)操作后的狀態(tài)。見Status屬性用到的常數(shù)

注意:上表所列屬性是ADODB.Recordset對象的標(biāo)準(zhǔn)屬性,即那些被關(guān)系數(shù)據(jù)庫的大多數(shù)通用OLE DB數(shù)據(jù)提供者所支持的屬性。帶星號的屬性表示它與DAO.Recordset或rdoResultset對象的相應(yīng)屬性完全一樣或很接近。

方法

方法 用途
AddNew* 向可更新的Recordset添加一條新記錄。調(diào)用語法為rstName.AddNew[{varField|avarFields},{varValue|avarValuese}],其中varField是單個字段名,avarFields是字段名數(shù)組。varValue是單個字段值,avarValue是由avarFields指定字段的值所組成的數(shù)組。調(diào)用Update方法則把新記錄加到數(shù)據(jù)庫的表中。如果向主關(guān)鍵字不是第一個字段的Recordset中添加記錄,則必須在AddNew方法中指定主關(guān)鍵字的名稱和值
Cancel 取消異步查詢的執(zhí)行,中止存儲過程或復(fù)合SQL語句創(chuàng)建多個Recordset,調(diào)用語法為rstName.Cancel
CancelBatch* 取消LockEdit值為BatchOptimistic的Recordset的即將生效的批量更新操作,調(diào)用語法為:rstName.CancelBatch [lngAffectRecords],可選參數(shù)lngAffectRecords的取值見lngAffectRecords用到的常數(shù)
Clone 復(fù)制一個帶有獨立記錄指針的Recordset對象,調(diào)用語法為:Set rstDupe=rstName.Clone()
Close 關(guān)閉Recordset對象,以后可以重新設(shè)Recordset的屬性并使用Open方法來再度訪問Recordset 。調(diào)用語法為:rstName.Close
Delete* 如果Recordset的LockEdit屬性值未設(shè)為adLockBatchOptimistic,立刻從Recordset和相應(yīng)表中刪除當(dāng)前記錄 
Find 尋找滿足指定條件的記錄。調(diào)用語法為:rstName.Find strCriteria [,lngSkipRecords, lngSearchDirection [,lngStart]],其中strCriteria是不含WHERE關(guān)鍵字的SQL WHERE子句,可選參數(shù)lngSkipRecords是應(yīng)用Find前所跳過的記錄數(shù)目,lngDirection指定查找方向(adSearchForward,和adSearchBackward,其中adSearchForward是默認值),可選參數(shù)lngStart指定了從哪兒開始查找,其值要么是一個Bookmark值,要么是Bookmark常數(shù),見varStart參數(shù)用到的Bookmark常數(shù)。 
GetRows 返回一個二維Variant數(shù)組(行、列),調(diào)用語法為avarname=rstName.GetRows(lngRows [,varStart[,{strFieldName|lngFieldIndex|avarFieldNames|avarFieldIndexes}]],其中l(wèi)ngRows是返回記錄行數(shù),varStart指定從哪兒開始查找,其值要么是一個Bookmark值,要么是Bookmark常數(shù),見varStart參數(shù)用到的Bookmark常數(shù)。第三個參數(shù)可以是單個列(字段)的名稱或索引,也可以是多個列名稱或索引組成的Variant數(shù)組。如果不指定第三個參數(shù),GetRows返回Recordset中所有列。 
GetString 默認情況下,返回指定數(shù)目記錄的String串值,記錄間由返回代碼分隔。記錄內(nèi)由tab分隔。調(diào)用語法為: strClip=rstname.GetString(lngRows,[, strCloumnDelimiter[,strRowDelimiter,[strNullExpr]]])。其中l(wèi)ngRows為返回記錄行數(shù),strColumnDelimiter為可選的列分隔符(vbTab是默認值),strRowDelimiter是可選的行分隔符(vbCr是默認值),strNullExpr是可選參數(shù),用于碰到Null值時的替代值(默認值是空字符串)。GetString的主要用途是通過把控件的Clip屬性設(shè)為strClip來處理MSFlexGrid或MSHFlexGrid控件
Move* 從當(dāng)前記錄移動記錄指針。調(diào)用語法為:rstName.Move lngNumRecords [, varStart],其中l(wèi)ngNumRecords是要跳過的記錄數(shù),可選選參數(shù)varStart指定從哪開始移動。其值要么是一個Bookmark值,要么是Bookmark常數(shù),見varStart參數(shù)用到的Bookmark常數(shù)。
MoveFirst* 移動記錄指針到第一條記錄,調(diào)用語法為:rstName.MoveFirst
MoveLast* 移動記錄指針到最后一條記錄,調(diào)用語法為:rstName.MoveLast
MoveNext 移動記錄指針到下一條記錄,調(diào)用語法為:rstName.MoveNext。它是能用于forward-only Recordset的唯一Move方法
MovePrevious* 移動記錄指針到前一條記錄,調(diào)用語法為:rstName.MovePrevious
NextRecordset 返回另外的Recordset,它通常由能產(chǎn)生多個Recordset的復(fù)合SQL語句(如SELECT * FROM orders;SELECT * FROM customers)或存儲過程來創(chuàng)建。調(diào)用語法為Next=rstName.NextRecordset [(lngRecordsAffected)],其中可選參數(shù)lngRecordsAffected指定返回到rstNext中去的記錄數(shù)目。如果已不存在Recordset,rstNext被設(shè)為Nothing 
Open 在一個活動Command或Connection對象上打開一個Recordset,調(diào)用語法為:rstName.Open [varSource [, varActiveConnection [, lngCursorType [, lngLockType [, lngOptions]]]]]。這些參數(shù)都是可選的,
Requery 重新從表中獲取Recordset的內(nèi)容,等效于Close后再Open。它是一個資源集中型操作。語法為:rstName.Requery
Resync* 重新從表中獲取部分Recordset內(nèi)容。調(diào)用語法為rstName.Resync [lngAffectRecords],其中l(wèi)ngAffectRecords的取值見lngAffectRecords用到的常數(shù)。如果把該參數(shù)設(shè)為adAffectCurrent或adAffectGroup,則比adAffectAll(默認值)所耗的資源要少。 
Save 創(chuàng)建包含Recordset永久性拷貝的文件。調(diào)用語法為rstName.Save strFileName。其中strFileName為路徑和文件名。通常用.rst作為文件的擴展名。
Supports 如果數(shù)據(jù)提供者支持指定的游標(biāo)相關(guān)的方法,則返回True,否則返回為False。調(diào)用語法為Supported=rstname.Supports (lngCursorOptions).關(guān)于lngCursorOptions,見Supports方法用到的常數(shù)。
Update* 使對Recordset的修改對底層數(shù)據(jù)源中的表生效。對于批量操作,Update方法只使修改對本地(Cached)Recordset生效。調(diào)用語法為rstName.Update
UpdateBatch* 合對指量類型的Recordset(LockType屬性值為adBatchOptimistic,CursorType屬性值為adOpenKeyset或adOpenStatic)所做的修改對底層數(shù)據(jù)源中的表生效。調(diào)用語法為rstName.UpdateBatch [lngAffectRecords],其中l(wèi)ngAffectRecords的取值見lngAffectrecords用到的常數(shù)。 

注:ADODB.Recordset對象不支持Edit方法。為了改變ADODB.Recordset對象當(dāng)前記錄的一個或多個字段的值,可以先使用rstName.Fields(n).Value=varValue把相應(yīng)字段的值改為所需要的值,而后執(zhí)行rstName.Update即可。

事件

事件名稱 觸發(fā)時機
EndOfRecordset 記錄指針試圖移到最后一條記錄之外時
FieldchangeComplete 字段值的改變完成之后 
MoveComplete Move或Move...方法執(zhí)行之后
RecordsChangeComplete 對單個記錄編輯完成以后
RecordsetChangeComplete 緩存中的改變對底層表生效之后
WillChangField 對字段值改變之前
WillChangeRecord 對單個記錄改變之前
WillChangeRecordset 緩存中的改變對底層表生效之前
WillMove Move或Move...方法執(zhí)行之前

注:事件處理模塊的函數(shù)頭幾乎都用到了adReason參數(shù)。該參數(shù)的取值見adReason參數(shù)用到的常數(shù)。

常數(shù)

AbsolutePage屬性用到的常數(shù)

常數(shù) 含義
adPosUnknown 數(shù)據(jù)提供者不支持頁面,Recordset為空,或數(shù)據(jù)提供者不能確定頁碼。
adPosBOF 記錄指針定位于文件開頭(BOF屬性值為True)
adPosEOF 記錄指針定位于文件結(jié)尾(EOF屬性值為True)

CursorLocation屬性用到的常數(shù)

常數(shù) 含義
adUseClient 使用客戶端游標(biāo)庫提供的游標(biāo)。ADODB.Recordset要求客戶端游標(biāo)
adUseServer 使用數(shù)據(jù)源提供的游標(biāo),通常(但非絕對)位于服務(wù)器上(默認值)

CursorType屬性用到的常數(shù)

常數(shù) 含義
adOpenForwardonly 提供單向移動游標(biāo)和只讀Recordset(默認值)
adOpenDynamic 提供可滾動游標(biāo),可顯示其他用戶對Recordset所做的改動(包括添加新記錄)
adOpenKeyset 提供可滾動游標(biāo),只隱藏其他用戶所做的改動,類似于dynaset類型的DAO.Recordset
adOpenStatic 提供一個位于Recordset靜態(tài)拷貝上的可滾動游標(biāo),類似于snapshot類型的DAO.Recordset,但多了可更新特性

EditMode屬性用到的常數(shù)

常數(shù) 含義
adEditNone 無正在進行的編輯操作(默認值)
adEditAdd 臨時添加一條記錄,但尚未存入數(shù)據(jù)庫的表中
adEditInProgress 當(dāng)前記錄中的數(shù)據(jù)已經(jīng)改動,但尚未存入數(shù)據(jù)庫的表中

Filter屬性用到的常數(shù)

常數(shù) 含義
adFilterNone 除去已有的過濾器,顯示Recordset中的所有記錄(等效于把Filter屬性置為空串,默認值)
adfilterAffectedRecords 只顯示上次CancelBatch、Delete、Resync或UpdateBatch方法執(zhí)行后所影響的記錄
adFilterFetchedRecords 只當(dāng)前Cache中的記錄,記錄條數(shù)由CacheSize來確定
adFilterPendingRecords 只顯示已改動但尚未被數(shù)據(jù)源處理的記錄(僅適用于批量更新模式)

LockType屬性用到的常數(shù)

常數(shù) 含義
adLockRecordOnly 指定只讀訪問(默認值)
adLockBatchOptimistic 使用批量更新模式而不是默認的立即更新模式
adLockOptimistic 使用樂觀鎖(僅在更新過程中才鎖定記錄或頁面)
adLockPessimistic 使用悲觀鎖(編輯或更新整個過程中均鎖定記錄或頁面)

State常數(shù)

常數(shù) 含義
adStateClosed Connection(或其他對象)是關(guān)閉的(默認值)
adStateConnecting 正在連接數(shù)據(jù)源的狀態(tài)
adStateExecuting Connection或Command對象的Execute方法已被調(diào)用
adStateFetching 返回行(row)到Recordset對象
adStateOpen Connection(或其他對象)是打開的(活動的)

Status屬性用到的常數(shù)(僅適用于Batch或Bulk Recordset操作)

常數(shù) 含義
adRecOK 成功更新
adRecNew 成功添加
adRecModified 成功修改
adRecDeleted 成功刪除
adRecUnmodified 無改動
adRecInvalid 未保存:Bookmark屬性無效
adRecMultipleChanges 未保存:保存會影響其他記錄
adRecPendingChanges 未保存:記錄引用了一個等待插入操作
adRecCanceled 未保存:操作被取消
adRecCantRelease 未保存:現(xiàn)有記錄值阻止了保存
adRecConcurrencyViolation 未保存:樂觀并發(fā)鎖發(fā)生了問題
adRecIntegrityViolation 未保存:操作會影響一致性
adRecMaxChangesExceeded 未保存:存在太多的等待改動
adRecObjectOpen 未保存:打開存貯對象發(fā)生沖突
adRecOutofMemory 未保存:內(nèi)存不足
adRecPermissionDenied 未保存:用戶權(quán)限不夠
adRecSchemaViolation 未保存:記錄的結(jié)構(gòu)不符合數(shù)據(jù)庫中的定義
adRecDBDeleted 未保存或刪除:記錄已被刪除

lngAffectRecords參數(shù)用到的常數(shù)

Command類型常數(shù) 含義
adAffectAll 包括Recordset對象的所有記錄,那些被Filter屬性過濾隱藏的記錄也計算在內(nèi)(默認值)
adAffectCurrent 只包括當(dāng)前記錄
adAffectGroup 只包括那些符合當(dāng)前Filter條件的記錄

varStart參數(shù)用到的Bookmark常數(shù)

常數(shù) 含義
adBookmarkCurrent 從當(dāng)前記錄開始(默認值)
adBookmarkFirst 從第一條記錄開始
adBookmarkLast 從最后一條記錄開始

 

Supports方法用到的常數(shù)

常數(shù) 含義
adAddNew 調(diào)用AddNew方法
adApproxPosition 設(shè)置和得到Absoluteposition和AbsolutePage屬性值
adBookmark 設(shè)置和得到Bookmark屬性值
adDelete 調(diào)用Delete方法
adHoldRecords 獲取另外的記錄或改變獲取記錄指針的位置,但不提交未確定的改變
adMovePrevious 調(diào)用GetRows,Move,MoveFirst和MovePrevious方法(表明是一個雙向可滾動游標(biāo))
adResync 調(diào)用Resync方法
adUpdate 調(diào)用Update方法
adUpdateBatch 調(diào)用UpdateBatch和CancelBatch方法

 

adReason參數(shù)用到的常數(shù)

常數(shù) 含義
AdRsnAddNew 調(diào)用了AddNew方法
AdRsnClose 調(diào)用了Close方法
AdRsnDelete 調(diào)用了Delete方法
AdRsnFirstChange 第一次對記錄字段值做了修改
AdRsnMove 調(diào)用了Move方法
AdRsnMoveFirst 調(diào)用了MoveFirst方法
AdRsnMoveLast 調(diào)用了MoveLast方法
AdRsnMovePrevious 調(diào)用了MovePrevious方法
AdRsnRequery 調(diào)用了Requery方法
AdRsnResync 調(diào)用了Resync方法
AdRsnUndoAddNew AddNew操作被用戶取消
AdRsnUndoDelete Delete操作被用戶取消
AdRsnUndoUpdate Update操作被用戶取消
AdRsnUpdate 調(diào)用了Update方法