VS2008 C++写程序,使用ADO连接数据库插入数据,但是到open函数的时候就报runtime error错误,另外程序在win7、win10下运行调试的时候没问题,放到XP、Windows server2003(原因是最终程序需要放到server2003环境下)系统下的时候就报这个错误了,下边贴出来连接数据库的代码:
_ConnectionPtr sqlSp;
CoInitialize(NULL);
HRESULT hr=sqlSp.CreateInstance("ADODB.Connection");
printf("连接字符串!\n");
CString str_SRC;
str_SRC="Provider=SQLOLEDB.1;Server=192.168.18.100;Database=test;uid=sa;pwd=1234;";
_bstr_t strSRC = str_SRC.AllocSysString();
//sqlSp->ConnectionString= "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=mytest;Data Source=192.168.18.52;Password=tykj1234+";
printf("连接数据库!\n");//连接数据库
try{
sqlSp->Open(strSRC,"","",adModeUnknown);
//sqlSp->Open("","","",adModeUnknown);
}
catch(_com_error &e){
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
// Print Com errors.
printf("\tError\n");
printf("\tCode = %08lx\n", e.Error());
printf("\tErrorMessage = %s\n", (LPCTSTR)e.ErrorMessage());
printf("\tSource = %s\n", (LPCTSTR) bstrSource);
printf("\tDescription = %s\n", (LPCTSTR) bstrDescription);
}
//拼写要插入的字段、字段值和插入语句
CString sql1;
……
下图是在XP、server2003环境下运行时候报错的截图,反复测试追踪到open函数了,另外使用代码里边注释掉的拼写连接语句的代码的时候,直接在sqlSp->ConnectionString=……这句代码就会出来runtime error错误

不知道为什么了,跪求大虾帮忙给瞅瞅到底咋回事?
解决方案
100
坊间传闻,需要使用统一的、老旧的
C:\Program Files\Common Files\System\ado\msado15.dll
C:\Program Files\Common Files\System\ado\msado27.tlb
C:\Program Files\Common Files\System\ado\msado15.dll
C:\Program Files\Common Files\System\ado\msado27.tlb