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