ADO学习笔记

一 、_variant_t和_bstr_t

      这两个类分别封装并管理VARIANT和BSTR这两种数据类型

    (1)VARIANT和BSTR这两种类型是COM中使用的数据类型。

    (2)为了C++中的变量应用到ADO编程中,只能进行数据类型的转换。

    (3)通过_variant_t和_bstr_t这两个类,就可以方便的把C++类型变量转换成COM中的变量了。


二、ADO异常捕获—— Error对象

(1)Error对象包含了ADO数据操作时发生错误的详细描述

        ADO的任何对象都可以产生一个或者多个数据提供者错误,当错误发生时,这些错误对象被添加到Connection对象的Errors集合里。

         当另外一个ADO对象产生一个错误时,Errors集合里的Error对象会被清除,新的Error对象将被添加到Errors集合里。

         注意:每个 Error 对象都代表特定的提供者错误而不是 ADO 错误,ADO 错误被记载到运行时的例外处理机制中。


(2)通过 Error 对象的属性可获得每个错误的详细信息,其中包括以下内容:

  • Description 属性,包含错误的文本。
  • Number 属性,包含错误常量的长整型整数值。
  • Source 属性,标识产生错误的对象。在向数据源发出请求之后,如果 Errors 集合中有多个 Error 对象,则将会用到该属性。
  • SQLStateNativeError 属性,提供来自 SQL 数据源的信息


三、取得一个字段的值的方法

        (1)表示取得第0个字段的值

       pRecordset->get_Collect(long(index));  或者  m_pRecordset->GetCollect(_variant_t(long(0));

        (2)直接使用列名获取该字段的值

       pRecordset->get_Collect("COLUMN_NAME");  或者  m_pRecordset->GetCollect("Name");


四、错误发现

(1)ADO  "IDispatch error #3092" 错误

        解决:

        在采用ADO访问ORACLE数据库的时候,出现IDispatch error #3092错误的原因之一是在SQL语句中使用了保留关键字。比如表的名称位user就会出现这种错误。

        比如:CString judge = "select ID,POSITION,TEMPERATURE fromTEMPCONSTANTINFO" 就有可能报错,把ID关键字用单括号括起来就没问题了。即改成select [ID],POSITION,TEMPERATURE from TEMPCONSTANTINFO"。一般来说,SQL 语句中的字符串常量需要用’单引号’括起来。

        另一种原因就是写的SQL语句有语法错误。需要检查是否有拼写错误,或者其他错误。

(2)ADO  "IDispatch error #3159" 错误

        解决:

        出现这样的错误,意思是:要插入的内容长度超过了我定义的字段长度,应该修改字段定义的长度。然后我对数据库表进行了检查,果然,由于采集到的数据中有个别值特别大的double型数据,它的double类型有时会超过我在数据库中所设定的NUMBER(7,4),超过这个就无法正常的插入了。

        然后我改成了NUMBER(16,8),这样就再也不会出现这种错误了。






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值