热门文章
 
ADO 编程模型的关键元素
ADO 对象模型目录
ADO connection
ADO connection
ADO connection
Mode 属性(Connec
AOD connection
ADO connection
Execute 方法 (AD
管理事务:BeginTran
 推荐文章
 
AOD connection
Recordset 对象
ADO事件处理程序如何协同工
ADO connection
ADO 教程:microso
ADO:Field 对象
ADO 编程模型的关键元素
ADO connection
ODBC体系结构分析
Mode 属性(Connec
通过 ADO 使用提供者
ADO connection
Command 对象的集合、
管理事务:BeginTran
返回 ADO 的版本号
OpenSchema 方法
 
你现在的位置:您现在的位置是: 中国ASP>>数据库>>ADO教程
ADO:Error 对象

Error 对象


包含有关数据访问错误的详细信息,这些错误与涉及提供者的单个操作有关。


说明

任何涉及 ADO 对象的操作都可能产生一个或多个提供者错误。随着每个错误的发生,一个或多个 Error 对象被放在 Connection 对象的 Errors 集合中。当另一个 ADO 操作产生错误时,Errors 集合被清空,新的 Error 对象集被放在 Errors 集合中。

注意 每个 Error 对象都表示一个特定的提供者错误,而不是 ADO 错误。ADO 错误被记录到运行时例外处理机制中。例如,在 Microsoft Visual Basic 中,发生 ADO 特有的错误将引发 On Error 事件,并且出现在 Error 对象中。关于 ADO 错误的完整列表,请参阅 ErrorValueEnum 主题。

可以读取 Error 对象的属性以获取关于每个错误的特定细节,包括以下内容:

Description 属性,包含错误的文本。这是默认的属性。


Number 属性,包含错误常量的 Long 整数值。


Source 属性,标识产生错误的对象。在向数据源发出请求后,如果 Errors 集合中有多个 Error 对象,那么该属性将非常有用。


SQLState 和 NativeError 属性,提供来自 SQL 数据源的信息。
当发生提供者错误时,它被放在 Connection 对象的 Errors 集合中。ADO 支持通过单个 ADO 操作返回多个错误,以允许提供者特有的错误信息。若要在错误处理程序中获取更多此类错误信息,请使用相应的语言或所在工作环境下的错误捕获功能,然后使用嵌套的循环来枚举 Errors 集合中每一个 Error 对象的属性。

Microsoft Visual Basic 和 VBScript 用户 如果没有有效的 Connection 对象,则需要从 Error 对象中检索错误信息。

与提供者的操作一样,ADO 在进行可能产生新提供者错误的调用前将清空 OLE Error Info 对象。但是,只有当提供者产生新的错误或者调用 Clear 方法时,才能清空并预置 Connection 对象的 Errors 集合。

某些属性和方法返回警告,这些警告显示为 Errors 集合中的 Error 对象,但并不终止程序的执行。请先调用 Errors 集合的 Clear 方法,然后再调用 Recordset 对象的 Resync、UpdateBatch 或 CancelBatch 方法,调用 Connection 对象的 Open 方法,或设置 Recordset 对象的 Filter 属性。这样,就可以读取 Errors 集合的 Count 属性以测试返回的警告。

Description 属性


描述 Error 对象。

返回值

返回 String 值,包含错误的描述。

说明

用 Description 属性获取简短的错误描述。显示此属性向用户警告您不能或不想处理的错误。该字符串将来自 ADO 或提供者。

提供者负责向 ADO 传递特定的错误文本。对于接收到的每一个提供者错误或警告,ADO 都会向 Errors 集合中添加一个 Error 对象。枚举 Errors 集合以跟踪提供者传递的错误。

Number 属性


指示唯一标识 Error 对象的数字。

返回值

返回 Long 值,该值可能对应于一个 ErrorValueEnum 常量。

说明

使用 Number 属性确定发生了哪个错误。属性的值是与错误条件对应的唯一数字。

Errors 集合以十六进制格式(例如 0x80004005)或以 Long 值(例如 2147467259)返回 HRESULT。这些 HRESULT 由基本组件生成,如 OLE DB,甚至是 OLE 本身。

Source 属性 (ADO Error)


指示最初产生错误的对象或应用程序的名称。

返回值

返回 String 值,指示对象或应用程序的名称。

说明

使用 Error 对象的 Source 属性以确定最初产生错误的对象或应用程序的名称。它可能是对象的类名称或编程 ID。对于 ADO 中的错误,属性值将为 ADODB.ObjectName,此 ObjectName 为触发错误的对象名称。对于 ADOX 和 ADO MD,该值将分别为 ADOX.ObjectName 和 ADOMD.ObjectName。

基于 Error 对象的 Source、Number 和 Description 属性中的错误文档,可以编写处理错误的适当代码。

对于 Error 对象,Source 属性为只读。

SQLState 属性


指示给定 Error 对象的 SQL 状态。

返回值

返回符合 ANSI SQL 标准的五个字符的 String 值,用于指示错误代码。

说明

如果在处理 SQL 语句过程中发生错误,请用 SQLState 属性读取提供者返回的五个字符的错误代码。例如,当配合使用 Microsoft OLE DB Provider for ODBC 和 Microsoft SQL Server 数据库时,将根据 ODBC 特有的错误或 Microsoft SQL Server 生成的错误从 ODBC 生成 SQL 状态错误代码,并将错误代码映射到 ODBC 错误上。这些错误代码在 ANSI SQL 标准中有说明,但是如果数据源不同,其实现方式也会不同。

NativeError 属性


指示给定 Error 对象的提供者特有的错误代码。

返回值

返回 Long 值,指示错误代码。

说明

使用 NativeError 属性对某个 Error 对象检索数据库特有的错误信息。例如,当配合使用 Microsoft ODBC Provider for OLE DB 和 Microsoft SQL Server 数据库时,从 SQL Server 产生的原生错误代码将通过 ODBC 和 ODBC Provider 传递到 ADO NativeError 属性。

Clear 方法


删除 Errors 集合中的所有 Error 对象。

语法

Errors.Clear

说明

使用 Errors 集合的 Clear 方法以删除集合中所有现有的 Error 对象。发生错误时,ADO 将自动清空 Errors 集合,并用基于新错误的 Error 对象填充集合。

某些属性和方法返回警告,这些警告显示为 Errors 集合中的 Error 对象,但并不终止程序的执行。请先调用 Errors 集合的 Clear 方法,再进行如下操作:调用 Recordset 对象的 Resync、UpdateBatch 或 CancelBatch 方法;调用 Connection 对象的 Open 方法;或设置 Recordset 对象的 Filter 属性。这样,就可以读取 Errors 集合的 Count 属性以测试返回的警告。

Errors 集合


包含为响应单个提供者相关失败而创建的 Error 对象。


说明

任何涉及 ADO 对象的操作都可能产生一个或多个提供者错误。在每个错误发生时,一个或多个 Error 对象将被放到 Connection 对象的 Errors 集合中。当另一个 ADO 操作产生错误时,Errors 集合被清空,Error 对象的新集合被放到 Errors 集合中。

每个 Error 对象都表示一个特定的提供者错误,而不是 ADO 错误。ADO 错误被记载到运行时例外处理机制中。例如,在 Microsoft Visual Basic 中,发生 ADO 特有的错误将触发 onError 事件,并且出现在 Err 对象中。

不产生错误的 ADO 操作对 Errors 集合没有影响。使用 Clear 方法手动清除 Errors 集合。

Errors 集合中的 Error 对象集合描述为响应单个语句而发生的所有错误。枚举 Errors 集合中的特定错误可使错误处理例程更精确地判断产生错误的原因和来源,并采取适当的步骤恢复。

某些属性和方法返回警告,这些警告显示为 Errors 集合中的 Error 对象,但并不终止执行程序。先调用 Errors 集合的 Clear 方法,然后再调用 Recordset 对象的 Resync、UpdateBatch 或 CancelBatch 方法,Connection 对象的 Open 方法,或设置 Recordset 对象的 Filter 属性。这样,就可以读取 Errors 集合的 Count 属性以测试返回的警告。

ErrorValueEnum

指定 ADO 运行时错误的类型。

下面列出了错误编号的三种形式:

  • 正十进制—十进制格式的完整数字的两个低位字节。此数字在默认的 Visual Basic 错误消息对话框中显示。例如,运行时错误“3707”。

  • 负十进制—完整错误编号的十进制转换。

  • 十六进制—完整错误编号的十六进制表示法。Windows 功能代码位于第四位数字。ADO 错误编号的功能代码为 A。例如:0x800A0E7B。

注意   OLE DB 错误可能传递给用户的 ADO 应用程序。通常,这些错误由 Windows 功能代码 4 标识。例如,0x8004……有关这些编号的详细信息。

 

 

常量说明
adErrBoundToCommand

 

3707
-2146824581
0x800A0E7B

 

无法更改以 Command 对象为源的 Recordset 对象的 ActiveConnection 属性。
adErrCannotComplete

 

3732
-2146824556
0x800A0E94

 

服务器无法完成此操作。
adErrCantChangeConnection

 

3748
-2146824540
0x800A0EA4

 

连接被拒绝。用户请求的新连接所具有的特性与已使用的不同。
adErrCantChangeProvider

 

3220
-2146825068
0X800A0C94

 

所提供的提供者与已使用的不同。
adErrCantConvertvalue

 

3724
-2146824564
0x800A0E8C

 

无法转换数据值,但不是因为符号不匹配或数据溢出。例如,转换截断了数据。
adErrCantCreate

 

3725
-2146824563
0x800A0E8D

 

因为字段数据类型未知,或提供者没有足够的资源执行该操作,所以无法设置或检索数据值。
adErrCatalogNotSet

 

3747
-2146824541
0x800A0EA3

 

操作需要一个有效的 ParentCatalog
adErrColumnNotOnThisRow

 

3726
-2146824562
0x800A0E8E

 

记录不包含这个字段。
adErrDataConversion

 

3421
-2146824867
0x800A0D5D

 

应用程序使用的值的类型对于当前操作不正确。
adErrDataOverflow

 

3721
-2146824567
0x800A0E89

 

数据值过大,无法以字段数据类型表示。
adErrDelResOutOfScope

 

3738
-2146824550
0x800A0E9A

 

要删除的对象的 URL 超出了当前记录的范围。
adErrDenyNotSupported

 

3750
-2146824538
0x800A0EA6

 

提供者不支持共享限制。
adErrDenyTypeNotSupported

 

3751
-2146824537
0x800A0EA7

 

提供者不支持所请求类型的共享限制。
adErrFeatureNotAvailable

 

3251
-2146825037
0x800A0CB3

 

对象或提供者不能执行所请求的操作。
adErrFieldsUpdateFailed

 

3749
-2146824539
0x800A0EA5

 

字段更新失败。有关的详细信息,请检查单个字段对象的 Status 属性。
adErrIllegalOperation

 

3219
-2146825069
0x800A0C93

 

在此上下文中不允许此操作。
adErrIntegrityViolation

 

3719
-2146824569
0x800A0E87

 

数据值与字段完整性限制相冲突。
adErrInTransaction

 

3246
-2146825042
0x800A0CAE

 

在事务中 Connection 对象无法被显式关闭。
adErrInvalidArgument

 

3001
-2146825287
0x800A0BB9

 

参数类型不正确,参数不在可接受的范围内,或者与其他数据冲突。
adErrInvalidConnection

 

3709
-2146824579
0x800A0E7D

 

在引用已关闭或无效连接的对象上不允许此操作。
adErrInvalidParamInfo

 

3708
-2146824580
0x800A0E7C

 

Parameter 对象定义不正确。所提供的信息不一致或不完整。
adErrInvalidTransaction

 

3714
-2146824574
0x800A0E82

 

相应的事务无效或尚未开始。
adErrInvalidURL

 

3729
-2146824559
0x800A0E91

 

URL 包含无效字符。请确保键入的 URL 正确。
adErrItemNotFound

 

3265
-2146825023
0x800A0CC1

 

在集合中无法找到与请求的名称或序号相对应的项目。
adErrNoCurrentRecord

 

3021
-2146825267
0x800A0BCD

 

BOFEOF 中的一个为 True,或者当前记录已被删除。所请求的操作需要当前记录。
adErrNotExecuting

 

3715
-2146824573
0x800A0E83

 

在没有运行时,无法执行操作。
adErrNotReentrant

 

3710
-2146824578
0x800A0E7E

 

处理事件时无法执行操作。
adErrObjectClosed

 

3704
-2146824584
0x800A0E78

 

对象被关闭时,不允许执行操作。
adErrObjectInCollection

 

3367
-2146824921
0x800A0D27

 

对象已经在集合中。无法追加。
adErrObjectNotSet

 

3420
-2146824868
0x800A0D5C

 

对象不再有效。
adErrObjectOpen

 

3705
-2146824583
0x800A0E79

 

对象打开时,不允许执行操作。
adErrOpeningFile

 

3002
-2146825286
0x800A0BBA

 

无法打开文件。
adErrOperationCancelled

 

3712
-2146824576
0x800A0E80

 

操作已被用户取消。
adErrOutOfSpace

 

3734
-2146824554
0x800A0E96

 

操作无法执行。提供者无法获取足够的存储空间。
adErrPermissionDenied

 

3720
-2146824568
0x800A0E88

 

没有足够的权限写入字段。
adErrPropConflicting

 

3742
-2146824546
0x800A0E9E

 

属性值和相关的属性冲突。
adErrPropInvalidColumn

 

3739
-2146824549
0x800A0E9B

 

属性无法应用到指定字段。
adErrPropInvalidOption

 

3740
-2146824548
0x800A0E9C

 

Property 属性无效。
adErrPropInvalidValue

 

3741
-2146824547
0x800A0E9D

 

属性值无效。请确保键入的值正确。
adErrPropNotAllSettable

 

3743
-2146824545
0x800A0E9F

 

属性是只读的或无法设置。
adErrPropNotSet

 

3744
-2146824544
0x800A0EA0

 

未设置可选属性值。
adErrPropNotSettable

 

3745
-2146824543
0x800A0EA1

 

未设置只读属性值。
adErrPropNotSupported

 

3746
-2146824542
0x800A0EA2

 

提供者不支持该属性。
adErrProviderFailed

 

3000
-2146825288
0x800A0BB8

 

提供者无法执行所请求的操作。
adErrProviderNotFound

 

3706
-2146824582
0x800A0E7A

 

无法找到提供者。可能没有正确安装提供者。
adErrReadFile

 

3003
-2146825285
0x800A0BBB

 

无法读取文件。
adErrResourceExists 3731
-2146824557
0x800A0E93
复制操作无法执行。目标 URL 命名的对象已经存在。指定 adCopyOverwrite 以替换该对象。
adErrResourceLocked

 

3730
-2146824558
0x800A0E92

 

由指定的 URL 所表示的对象被一个或多个其他进程锁定。等候至进程结束,然后再尝试此操作。
adErrResourceOutOfScope

 

3735
-2146824553
0x800A0E97

 

源或目标 URL 超出了当前记录的范围。
adErrSchemaViolation

 

3722
-2146824566
0x800A0E8A

 

数据值和字段的数据类型或限制相冲突。
adErrSignMismatch

 

3723
-2146824565
0x800A0E8B

 

由于数据值带符号,而提供者使用的字段数据类型不带符号,因此转换失败。
adErrStillConnecting

 

3713
-2146824575
0x800A0E81

 

异步连接时无法执行操作。
adErrStillExecuting

 

3711
-2146824577
0x800A0E7F

 

异步运行时无法执行操作。
adErrTreePermissionDenied

 

3728
-2146824560
0x800A0E90

 

没有足够的权限访问树或子树。
adErrUnavailable

 

3736
-2146824552
0x800A0E98

 

操作无法完成,并且状态不可用。字段可能不可用或未尝试该操作。
adErrUnsafeOperation

 

3716
-2146824572
0x800A0E84

 

本计算机上的安全设置禁止访问其他域上的数据源。
adErrURLDoesNotExist

 

3727
-2146824561
0x800A0E8F

 

源 URL 或者目标 URL 的父不存在。
adErrURLNamedRowDoesNotExist

 

3737
-2146824551
0x800A0E99

 

由此 URL 命名的记录不存在。
adErrVolumeNotFound

 

3733
-2146824555
0x800A0E95

 

提供者无法定位由 URL 指示的存储设备。请确保键入的 URL 正确。
adErrWriteFile

 

3004
-2146825284
0x800A0BBC

 

写入文件失败。
adWrnSecurityDialog

 

3717
-2146824571
0x800A0E85

 

仅在内部使用。请勿使用。
adWrnSecurityDialogHeader

 

3718
-2146824570
0x800A0E86

 

仅在内部使用。请勿使用。

 

ADO/WFC 等价内容

包:com.ms.wfc.data

仅定义了下列 ADO/WFC 等价内容的子集。

常量
AdoEnums.ErrorValue.BOUNDTOCOMMAND
AdoEnums.ErrorValue.DATACONVERSION
AdoEnums.ErrorValue.FEATURENOTAVAILABLE
AdoEnums.ErrorValue.ILLEGALOPERATION
AdoEnums.ErrorValue.INTRANSACTION
AdoEnums.ErrorValue.INVALIDARGUMENT
AdoEnums.ErrorValue.INVALIDCONNECTION
AdoEnums.ErrorValue.INVALIDPARAMINFO
AdoEnums.ErrorValue.ITEMNOTFOUND
AdoEnums.ErrorValue.NOCURRENTRECORD
AdoEnums.ErrorValue.NOTEXECUTING
AdoEnums.ErrorValue.NOTREENTRANT
AdoEnums.ErrorValue.OBJECTCLOSED
AdoEnums.ErrorValue.OBJECTINCOLLECTION
AdoEnums.ErrorValue.OBJECTNOTSET
AdoEnums.ErrorValue.OBJECTOPEN
AdoEnums.ErrorValue.OPERATIONCANCELLED
AdoEnums.ErrorValue.PROVIDERNOTFOUND
AdoEnums.ErrorValue.STILLCONNECTING
AdoEnums.ErrorValue.STILLEXECUTING
AdoEnums.ErrorValue.UNSAFEOPERATION



相关信息:

ADO 编程模型的关键元素
ADO 对象模型目录
ADO connection 对象包含的内容
ADO connection 对象 :ConnectionString 属性
ADO connection:ConnectionTimeout 属性
Mode 属性(Connection、Record 或 Stream)
AOD connection属性:CursorLocation DefaultDatabase IsolationLevel Provider
ADO connection 对象 :open和close方法

 

中国ASP技术 ASP.ORG.CN 版权所有 2004-2008