try
{
HRESULT hr = m_pConnection.CreateInstance(__uuidof(Connection));
if(FAILED(hr))
{
initMsg.Format("创建_ConnectionPtr对象失败");
ShowAndWriteAlarmInfo(initMsg);
}
char buf[200];
memset(buf,0,200);
CString adoString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=" + m_szUser + ";password= " + m_szPassword + ";Initial Catalog="+m_szDBName+";Data Source=" + m_szIp + "," + m_szPort;
memcpy(buf,adoString,adoString.GetLength());
m_pConnection->ConnectionTimeout = 10;
m_pConnection->CommandTimeout = 5;
m_pConnection->Mode = adModeUnknown;
hr = m_pConnection->Open(buf, "", "", adModeUnknown);
if (SUCCEEDED(hr))
{
Msg.Format("数据库连接成功");
ShowAndWriteAlarmInfo(initMsg);
return TRUE;
}
}
catch(_com_error &e)
{
m_pConnection = NULL;
Msg.Format("无法连接数据库");
ShowAndWriteAlarmInfo(initMsg);
TRACE("Code = %0x\n", e.Error());
TRACE("Code meaning = %s\n", (char*) e.ErrorMessage());
TRACE("Source = %s\n", (char*) e.Source());
TRACE("Description = %s\n", (char*) e.Description());
return FALSE;
}
打印错误信息:
Code = 80004003
Code meaning = 无效指针
Source = (null)
Description = (null)
而且有时候可以创建连接成功,有时候不行
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
ADO对象之Connection用法总结:
vc 连接数据库CreateInstance失败问题
ADO CreateInstance(__uuidof(Connection))失败
C++ CreateInstance("ADODB.Connection");创建接口失败的解决方法
ConnectionPtr _RecordsetPtr CreateInstance失败
CreateInstance(_uuidof(Connection))执行失败的解决办法
学习总结---ADO编程中_ConnectionPtr的open函数连接字符串
使用_ConnectionPtr接口开发ACCESS数据库(4)
CreateInstance(__uuidof(Connection)) 不支持此接口解决方法
CreateInstance(_T("ADODB.Connection"))和CreateInstance(__uuidof(Connection))的区别