有一天客户现场连接数据库时反馈报错误码0x80004003。 一看是无效的指针,然后定位到在创建实例时全部都失败了。

m_ptrCommand.CreateInstance(__uuidof(Command));
m_ptrRecordset.CreateInstance(__uuidof(Recordset));
m_ptrConnection.CreateInstance(__uuidof(Connection));
if(m_ptrCommand==NULL)
{    m_strErrorMsg   = _T("数据库命令对象创建失败");    return  false;
}
if(m_ptrRecordset==NULL)
{    m_strErrorMsg   = _T("数据库记录集对象创建失败");    return  false;
}
if(m_ptrConnection==NULL)
{    m_strErrorMsg   = _T("数据库连接对象创建失败");    return  false;
}

但是为什么如此,第一反应是ado未进行初始化,但是再看代码中也加入了  CoInitialize(NULL)初始化代码。 百思而不得姐,从而三问度娘。客户确实是xp机器是不是缺少KB983246补丁,缺少对ado连接的支持。但是都一一排除。再从头分析,绝大部分安装现场不出问题,而在这里ado创建实例失败。 我程序中用到的是

#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename ("EOF", "adoEOF")   

由此分析应该是这里出的问题,应该是win7和xp的msado15.dll不同。我把客户现场XP系统下包含msado15.dll的文件夹ado,替换掉我本地win7下的ado文件夹。然后重新编译程序,再在xp下应用,完美解决。

不过为什么会这样?

是因为ADO向下兼容的问题,使用xp的ADO低版本在高版本大多能运行,反之则不行。

WIN7 ADO的文件: msado15.dll,版本:6.1

XP   ADO的文件: msado15.dll,版本:2.81

那问题随之而来,如何让ADO兼容所有的系统呢?

#import "msado15.dll" no_namespace  rename ("EOF",  "adoEOF")     

把代码改成这样,然后把xp的msado15.dll复制到工程目录。 这样就能同时兼容xp和win7.

ADO连接数据库出现错误码 0x80004003相关推荐

  1. ADO错误码,ASP错误代码,jscript错误代码,vbscript错误代码对应

    大部分的ADO的错误码对应的含义 除了在 Error 对象和 Errors 集合中说明的提供者错误之外,ADO 本身也将错误返回到运行时环境的异常处理机制之中.使用编程语言的错误捕获机制(如 Micr ...

  2. ADO连接数据库,编译到客户机运行时出现CreateInstance报错0x80004002、CreateParameter报0xC0000005错误的解决方法。

    ADO连接数据库,编译到客户机运行时出现CreateInstance报错0x80004002,经查是由于ADO版本不一致引起的. 解决方法将原来stdafx.h中的 #import "c:\ ...

  3. Oracle:错误码ORA-28040 的坑

    一.背景 因项目要求,第一次部署了Oracle 12 C的Server,Linux CentOS版,数据库装好之后部署一个Java Web项目(A项目)去连接数据库,该Java项目之前用的Oracle ...

  4. 服务器错误码显示,常见错误码说明

    ### Linux版 #### 验证KEY失败,错误码:1004 ![](https://upload.zkeys.com/2020/10/5f8fd93d9d132.png?token=uLsCsa ...

  5. NET_DVR_GetErrorMsg 返回最后操作的错误码信息

    官网链接 NET_DVR_GetErrorMsg 返回最后操作的错误码信息. char * NET_DVR_GetErrorMsg( LONG * pErrorNo ); 参量 pErrorNo [o ...

  6. docker容器错误码

    有时有些docker容器执行一段时间后退出了,为了查明原因采用查看下docker容器退出的错误码,具体步骤如下: 1.找出退出的容器,可以通过下面两种方式方式查找: docker ps --filte ...

  7. [微信官方文档] 小程序-错误码信息与解决方案表

    错误码信息与解决方案表 错误码是通过binderror回调获取到的错误信息. 代码 异常情况 理由 解决方案 1000 后端错误调用失败 该项错误不是开发者的异常情况 一般情况下忽略一段时间即可恢复. ...

  8. 解决微信H5获取SDK授权报错提示errMsg: “config:fail,Error: 系统错误,错误码:63002,invalid signature [20200908 22:17:17][]“

    如果常规检查都做过可以仔细看下微信开放文档 这个里面的报错原因 如果都不是那么极有可能是(恭喜你!看样子你的H5页面日活人数还蛮多[呲牙]) 获取腾讯微信平台access_token超过每日默认上限2 ...

  9. 【FFmpeg】ffmpeg中函数返回的错误码:AVERROR及AVERROR_*

    1.AVERROR FFmpeg的错误码大部分使用的PIOSIX标准中错误码的负值. AVERROR定义在文件 FFmpeg-n4.2.1/libavutil/error.h 中 #define AV ...

最新文章

  1. centos 上传jar 命令_centos上快速将一个jar使用docker部署启动
  2. 人生永无止境的意思是什么_什么是莫比乌斯指环?莫比乌斯环的诅咒
  3. NOIP模拟测试19「count·dinner·chess」
  4. iPhone将NSString转换编码集为gb2312或者gbk的方法
  5. ubuntu下安装MySQL8.0
  6. kerberos验证_SQL Server中的服务主体名称和Kerberos身份验证概述
  7. 大数据与商业地理分析
  8. 【javascript】ajax 基础(转)
  9. Python第3次作业
  10. You must depend on an EXACT version of electron-prebuilt-compile not a range (got ^4.0.0)
  11. 准双向口和KELL C头文件已经处理
  12. java串口监控数据,怎样监听或者拦截串口上的数据
  13. php制作单位换算,在线单位换算器
  14. Go语言-复合数据结构(map)
  15. 运用Python轻松爬取网易云的音乐,小白都能懂的爬虫教程
  16. 华为手机SD卡升级指导
  17. 数据可视化(python)----中国近十年就业GDP对比
  18. DP(动态规划)总结
  19. 12款超牛的办公神器,个个功能强大,让工作轻松不累!
  20. html 订阅发布,发布订阅模式.html · Avan/blog_demo_defineProperty - Gitee.com

热门文章

  1. 计算机私密保密服务协议,保密协议合法吗?
  2. mysql创建主键约束_mysql添加主键约束
  3. k8s的健康性检查-Health Check
  4. win7下显示文件扩展名的方法
  5. Python: 相乘
  6. 红胖子创业第二年总结: 聚焦擅长优势,切勿盲目扩大,技术积累产品,减少无用社交,改变性格观念,渐入佳境闭嘴
  7. 控制树莓派zero的ACT led指示灯
  8. 【Django】python后端的POST与GET请求
  9. etcd中Raft协议
  10. 支付宝小程序开发——学习总结