数据库连接控件ADODC,ADO模型对象的几大属性的问题!高手请指教!说明详细一些!

wwdzgejie 2004-10-24 04:18:27
.LockType = adLockBatchOptimistic locktype属性的这4个取值有什么区别都怎么使
.LockType = adLockOptimistic 用!
.LockType = adLockPessimistic
.LockType = adLockReadOnly


.CursorLocation = adUseClient cursorlocation属性的这2个取值有什么区别怎么使用
.CursorLocation = adUseServer

.CursorType = adOpenDynamic cursortype属性的这4个取值有什么区别怎么使用!
.CursorType = adOpenForwardOnly 我不是没有找过书,书上写的就是使用光标类型,也
.CursorType = adOpenKeyset 没有什么详细说明!
.CursorType = adOpenStatic

还有在ADODC控件记录源属性上有4个取值:8-adcmdunknown,1-adcmdtext,2-adcmdtable
4-adcmdstoreproc

.updata 这两个写数据库操作有什么区别!
.updatabatch 现在的书上就写,根本
就没有使用说明!一头
雾水!
高手请帮忙!感谢!
...全文
282 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxcc 2004-10-28
.LockType
LockType 属性
指示编辑过程中对记录使用的锁定类型。

设置和返回值

设置或返回以下某个 LockTypeEnum 的值。

常量 说明
adLockReadOnly 默认值,只读。无法更改数据。
adLockPessimistic 保守式记录锁定(逐条)。提供者执行必要的操作确保成功编辑记录,通常采用编辑时立即锁定数据源的记录的方式。
adLockOptimistic 开放式记录锁定(逐条)。提供者使用开放式锁定,只在调用 Update 方法时锁定记录。
adLockBatchOptimistic 开放式批更新。用于与立即更新模式相反的批更新模式。

.CursorLocation
CursorLocation 属性
设置或返回游标服务的位置。

设置和返回值

设置或返回可设置为以下某个常量的长整型值。

常量 说明
adUseNone 没有使用游标服务。(该常量已过时并且只为了向后兼容才出现)。
adUseClient 使用由本地游标库提供的客户端游标。本地游标服务通常允许使用的许多功能可能是驱动程序提供的游标无法使用的,因此使用该设置对于那些将要启用的功能是有好处的。AdUseClient 具有向后兼容性,也支持同义的 adUseClientBatch。
adUseServer 默认值。使用数据提供者的或驱动程序提供的游标。这些游标有时非常灵活,对于其他用户对数据源所作的更改具有额外的敏感性。但是,Microsoft Client Cursor Provider(如已断开关联的记录集)的某些功能无法由服务器端游标模拟,通过该设置将无法使用这些功能。

.CursorType =
CursorType 属性
指示在 Recordset 对象中使用的游标类型。

设置和返回值

设置或返回以下某个 CursorTypeEnum 值。

常量 说明
AdOpenForwardOnly 仅向前游标,默认值。除了只能在记录中向前滚动外,与静态游标相同。当只需要在记录集中单向移动时,使用它可提高性能。
AdOpenKeyset 键集游标。尽管从您的记录集不能访问其他用户删除的记录,但除无法查看其他用户添加的记录外,键集游标与动态游标相似。仍然可以看见其他用户更改的数据。
AdOpenDynamic 动态游标。可以看见其他用户所作的添加、更改和删除。允许在记录集中进行所有类型的移动,但不包括提供者不支持的书签操作。
AdOpenStatic 静态游标。可以用来查找数据或生成报告的记录集合的静态副本。另外,对其他用户所作的添加、更改或删除不可见。

CommandType 属性
指示 Command 对象的类型。

设置和返回值

设置或返回以下某个 CommandTypeEnum 值。

常量 说明
AdCmdText 将 CommandText 作为命令或存储过程调用的文本化定义进行计算。
AdCmdTable 将 CommandText 作为其列全部由内部生成的 SQL 查询返回的表格的名称进行计算。
AdCmdTableDirect 将 CommandText 作为其列全部返回的表格的名称进行计算。
AdCmdStoredProc 将 CommandText 作为存储过程名进行计算。
AdCmdUnknown 默认值。CommandText 属性中的命令类型未知。
adCmdFile 将 CommandText 作为持久 Recordset 文件名进行计算。
AdExecuteNoRecords 指示 CommandText 为不返回行的命令或存储过程(例如,插入数据的命令)。如果检索任意行,则将丢弃这些行且并不返回。它总是与 adCmdText 或 adCmdStoredProc 进行组合。

.update
Update 方法
保存对 Recordset 对象的当前记录所做的所有更改。

语法

recordset.Update Fields, Values

参数

Fields 可选。变体型,代表单个名称;或变体型数组,代表需要修改的字段(一个或多个)名称及序号位置。

Values 可选。变体型,代表单个值;或变体型数组,代表新记录中字段(单个或多个)值。

说明

使用 Update 方法保存自调用 AddNew 方法或更改现有记录中任何字段值以来所作的所有更改。Recordset 对象必须支持更新。


.updatebatch
UpdateBatch 方法
将所有挂起的批更新写入磁盘。

语法

recordset.UpdateBatch AffectRecords

参数

AffectRecords 可选,AffectEnum 值。决定 UpdateBatch 方法所影响的记录数目。可以为如下常量之一。

常量 说明
adAffectCurrent 只写入当前记录的挂起更改。
adAffectGroup 写入满足当前 Filter 属性设置的记录所发生的挂起更改。必须将 Filter 属性设置为某个有效的预定义常量才能使用该选项。
adAffectAll (默认值)。写入 Recordset 对象中所有记录的挂起更改,包括由于当前 Filter 属性设置而隐藏的任何记录。
adAffectAllChapters 写入所有子集的挂起更改。


说明

按批更新模式修改 Recordset 对象时,使用 UpdateBatch 方法可将 Recordset 对象中的所有更改传递到基本数据库。

如果 Recordset 对象支持批更新,那么可以将一个或多个记录的多重更改缓存在本地,然后再调用 UpdateBatch 方法。如果在调用 UpdateBatch 方法时正在编辑当前记录或者添加新的记录,那么在将批更新传送到提供者之前,ADO 将自动调用 Update 方法保存对当前记录的所有挂起更改。
回复
wwdzgejie 2004-10-28
这么多!这些资料我在书上也能找到,但是我实在不明白是什么意思!
比如说CursorLocation有两个值一个是客户端游标,一个服务器端游标!但是这两个到底在使用上什么区别!应该有什么用!什么使用应该用客户端游标,什么时候应该用服务器游标呢!
回复
starsoulxp 2004-10-24
Connection对象

属性

属性名称 数据类型和用途
Attributes 可读写Long类型,通过两个常数之和指定是否使用保留事务(retainning transactions)。常数adXactCommitRetaining表示调用CommitTrans方法时启动一个新事务;常数adXactAbortRetaning表示调用RollbackTrans方法时启动一个新事务。默认值为0,表示不使用保留事务。
CommandTimeout 可读写Long类型,指定中止某个相关Command对象的Execute调用之前必须等待的时间。默认值为30秒。
ConnectionString 可读写String类型,提供数据提供者或服务提供者打开到数据源的连接所需要的特定信息
ConnectionTimeout 可读写Long类型,指定中止一个失败的Connection.Open方法调用之前必须等待的时间,默认值为15秒。
CursorLocation 可读写Long类型,确定是使用客户端(adUseClient)游标引擎,还是使用服务器端(adUseServer)游标引擎。默认值是adUseServer。
DefaultDatabase 可读写String类型,如果ConnectString中未指定数据库名称,就使用这里所指定的名称,对SQL Server而言,其值通常是pubs
IsolationLevel 可读写Long类型,指定和其他并发事务交互时的行为或事务。见IsolationLevel常数
Mode Long类型,指定对Connection的读写权限。见Mode常数
Provider 可读写String类型,如果ConnectionString中未指定OLE DB数据或服务提供者的名称,就使用这时指定的名称。默认值是MSDASQL(Microsoft OLE DB Provider for ODBC)。
State 可读写Long类型,指定连接是处于打开状态,还是处于关闭状态或中间状态。见State常数
Version 只读String类型,返回ADO版本号。

注意:上面所列出的大多数可读写的属性,只有当连接处于关闭状态时才是可写的。

只有当用户为Connection对象用BeginTrans...CommitTrans...RollbackTrans方法定义了不遗余力,事务隔离程度的指定才真正有效。如果有多个数据库用户同时执行事务,那么应用程序中必须指定如何响应运行中的其他事务。

方法

方法 用途
BeginTrans 初始化一个事务;其后必须有CommitTrans和/或RollbackTrans相呼应
Close 关闭连接
CommitTrans 提交一个事务,以完成对数据源的永久改变(要求使用之前必须调用了BeginTrans方法)
Execute 人SELECT SQL语句返回一个forward-only Recordset对象,也用来执行那些不返回Recordset语句,如INSERT、UPDATE、DELETE查询或DDL语句
Open 用连接字符串来打开一个连接
OpenSchema 返回一个Recordset对象以提供数据源的结构信息(metadata)
RollbackTrans 取消一个事务,恢复对数据源做的临时性改变(要求使用之前必须调用了BeginTrans方法)

注:只有Execute、Open和OpenSchema三个方法才能接受变元参数。Execute的语法为:
cnnName.Execute strCommand,[lngRowsAffected[,lngOptions]]
strCommand的值可以是SQL语句、表名、存储过程名,也可以是数据提供者所能接受的任意字符串。为了提高性能,最好为lngOptions参数指定合适的值(详见lngOptions参数用到的常数),以使提供者解释语句时不用再去判定其类型。可选参数lngRowsAffected将返回INSERT、UPDATE或DELETE查询执行以后所影响的数目。这些查询会返回一个关闭的Recordset对象。一个SELECT查询将返回lngRowsAffected值为0并且返回带有一行或多行内容的打开的forward-only Recordset。

事件

事件名称 触发时机
BeginTransComplete BeginTrans方法执行以后。
Private Sub cnnName_BeginTransComplet(ByVal TransactionLevel As Long,ByVal pError As ADODB.Error,adStatus As ADODB.EventStatusEnum, ByVal pConnection As ADODB.Connection)
CommitTransComplete CommitTrans方法执行以后
Private Sub Connection1_CommitTransComplete(ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pConnection As ADODB.Connection)
ConnectComplete 成功建立到数据源的Connection之后
Private Sub Connection1_ConnectComplete(ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pConnection As ADODB.Connection)
Disconnect Connection关闭之后
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方法执行之后
Private Sub Connection1_RollbackTransComplete(ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pConnection As ADODB.Connection)
WillConnect 即将调用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 即将调用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参数所用到的常数的名称和含义详见adStatus所用的常数

常数

IsolationLevel常数

常数 含义
adXactCursorStability 只允许读其他事务已提交的改变(默认值)
adXactBrowse 允许读其他事务未提交的改变
adXactChaos 本事务不会覆盖其他位于更高隔离程度的事务所做的改变
adXactIsolated 所有事务相互独立
adXactReadCommitted 等同于adXactCursorStability
adXactReadUncommitted 等同于adXactBrowse
adXactRepeatableRead 禁止读其他事务的改变
adXactSerializable 等同于adXactIsolated
adXactUnspecified 不能确定提供者的事务隔离程度

Mode常数

常数 含义
adModeUnknown 未指定数据源的连接许可权(默认值)
adModeRead 连接是只读的
adModeReadWrite 连接是可读写的
adModeShareDenyNone 不拒绝其他用户的读写访问(Jet OLE DB Provider的默认值)
adModeShareDenyRead 拒绝其他用户打开到数据源的读连接
adModeShareDenyWrite 拒绝其他用户打开到数据源的写连接
adModeShareExclusive 以独占方式打开数据源
adModeWrite 连接是只写的

State常数

常数 含义
adStateClosed Connection(或其他对象)是关闭的(默认值)
adStateConnecting 正在连接数据源的状态
adStateExecuting Connection或Command对象的Execute方法已被调用
adStateFetching 返回行(row)到Recordset对象
adStateOpen Connection(或其他对象)是打开的(活动的)

Execute方法中lngOption参数用到的常数

Command类型常数 含义
adCmdUnknown Command类型未定(默认值),由数据提供者去判别Command语法
adCmdFile Command是和对象类型相应的文件名称
adCmdStoredProc Command是存储过程名称
adCmdTable Command是能产生内部SELECT * FROM TableName查询的表名称
adCmdTableDirect Command是能直接从表中获取行内容的表名称
adCmdText Command是一条SQL语句

ADODB事件处理子过程参数adStatus所用的常数

常数 含义
adStatusCancel 操作被用户取消
adStatusCnatDeny 操作不能拒绝其他用户对数据源的访问
adStatusErrorsOccurred 操作导致错误并已送到Errors集合中
adStatusOK 操作成功
adStatusUnWantedEvent 操作过程中一个未预料到的事件被激活
回复
yingxiangchen 2004-10-24
查一下MSDN可能会知道答案。、
回复
jam021 2004-10-24
关注,帮你顶!
回复
wwdzgejie 2004-10-24
自己顶一下,难道没人会吗?
对了还要加上两个属性值.updatabatch adaffectcurrent
.updatabatch adaffectgroup
回复
发动态
发帖子

1181

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
社区公告
暂无公告