代码如下
str2 = "DSN=" + dsn + ";" + "UID=" +uid + ";" + "PWD=" +pwd + ";";
try
{
CoInitialize(NULL);
_ConnectionPtr pConn("ADODB.Connection");
_RecordsetPtr pRst("ADODB.Recordset");
pConn->Open(str2.c_str()
,"","",adConnectUnspecified);
FieldPtr fd; ..........中间省略
}catch (_com_error &e)
{
printf("Description = '%s'\n", (char*) e.Description());
data.cols = data.strsize =0;
::CoUninitialize();
}
str2 = "DSN=" + dsn + ";" + "UID=" +uid + ";" + "PWD=" +pwd + ";";
try
{
CoInitialize(NULL);
_ConnectionPtr pConn("ADODB.Connection");
_RecordsetPtr pRst("ADODB.Recordset");
pConn->Open(str2.c_str()
,"","",adConnectUnspecified);
FieldPtr fd; ..........中间省略
}catch (_com_error &e)
{
printf("Description = '%s'\n", (char*) e.Description());
data.cols = data.strsize =0;
::CoUninitialize();
}
报告[Microsoft][ODBC 驱动程序 管理器] 未发现数据源名称并且未指定默认驱动程序。但是有时会出现非法操作,调试得到
First-chance exception in eventselect.exe: 0xC0000005: Access Violation.
而且看不到相应程序的源代码,部分汇编如下,在最后一句中断
_com_error::~_com_error:
0043805E push esi
0043805F mov esi,ecx
00438061 mov eax,dword ptr [esi+8]
00438064 mov dword ptr [esi],offset _com_error::`vftable' (004b96ac)
0043806A test eax,eax
0043806C je _com_error::~_com_error+16h (00438074)
0043806E mov ecx,dword ptr [eax]这个问题有时,有时又不出来,怎么办?