我的程序里用到了ADO访问ACCESS数据库,在多数计算机上跑的好好的,很少一些计算机上程序崩溃了,我的计算机上没法重现这样的问题,就给程序加了日志在遇到问题的计算机上跑,定位到在声明_ConnectionPtr、_RecordsetPtr类型的变量时程序抛出异常,是怎么回事?跟操作系统环境有关吗(发生异常的机器是WindowsXP操作系统)?
解决方案 »
- VS调试的时候如何通过线程ID获取句柄,或者通过句柄获取ID?
- dll加载问题
- 请问如何获知某进程处于DEBUG状态?
- cannot convert parameter 2 from 'class CStringArray' to 'class CStringArray'?
- 散分!即将离开软件开发,女朋友也离我而去,不知道任何理由!
- 想删除指定的视图,却删不掉,怎么办?急
- 想让用户随意输入含变量x的表达式,在程序中对表达式进行判断,然后用数字代替变量,编译成机器码并计算。怎样实现?
- ODBC调用存储过程, 如何根据返回值操作
- 帮忙找一个好的建模工具
- 做一个安全系统课题,求敏感API库
- Window Media Player控件编写视频软件的问题
- 求用VC做在线考试系统思路!急!
_ConnectionPtr ConnectionPtr(__uuidof(Connection));
_RecordsetPtr RecordsetPtr(__uuidof(Recordset));
是不是相当于:
_ConnectionPtr ConnectionPtr;
_RecordsetPtr RecordsetPtr;
ConnectionPtr.CreateInstance(__uuidof(Connection));
RecordsetPtr.CreateInstance(__uuidof(Recordset));
异常应该是执行CreateInstance的时候抛出的吧?
执行结果为:
hResult = -2147221164
查MSDN,该错误码的含义是类未注册。接着执行:
ConnectionPtr->Open(L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ABC.mdb;;;adModeUnknown", "", "", adModeUnknown);
抛出_com_err异常,错误码为-2147467261。
安装了MDAC 2.7SP1,结果还是如此。该怎么办呢?
::CoInitialize(NULL);
和
::CoUninitialize();
改成
"ADODB.Connection"放原来机器上编译,然后拿到出错的机器再试试看!
你有在其他机器上面试过吗?有否试过手动注册相关DLL?有否试过在注册表中查找相关的类是否注册成功?
delete g_goconnect;