C++.net 下使用ADO.net连接数据库报错Runtime error

C++语言 码拜 8年前 (2016-09-13) 1075次浏览
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错误
C++.net 下使用ADO.net连接数据库报错Runtime error
不知道为什么了,跪求大虾帮忙给瞅瞅到底咋回事?

解决方案

100

坊间传闻,需要使用统一的、老旧的
C:\Program Files\Common Files\System\ado\msado15.dll
C:\Program Files\Common Files\System\ado\msado27.tlb

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C++.net 下使用ADO.net连接数据库报错Runtime error
喜欢 (0)
[1034331897@qq.com]
分享 (0)