_ConnectionPtr ADOConn;
_RecordsetPtr m_pADOSet;
CString strConnect;
::CoInitialize(NULL);
strConnect="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=ascw;Data Source=notebook";try
{
//ADOConn.CreateInstance(__uuidof(Connection));
ADOConn.CreateInstance( "ADODB.Connection");
if (ADOConn==NULL)
{
AfxMessageBox( "失败! \r\n ");
return;
}
//ADOConn-> Open((const char *)strConnect, " ", " ",adModeUnknown);//adConnectUnspecified
ADOConn-> Open((_bstr_t)strConnect, " ", " ",adModeUnknown); }
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format(_T("连接数据库失败!/r/n错误信息:%s"),e.ErrorMessage());
AfxMessageBox(errormessage);
}
连接数据库为sqlserver2000,执行到ADOConn-> Open时出现异常,e.ErrorMessage()信息为IDispatch error #3149,连接字符串是没问题的,已经在vb里用ado.connection对象连接测试成功!另外sqlserver2000的安全性设置为sqlserver和windows,安全性设置是没问题的,大家帮忙看下是什么问题,谢谢了!
_ConnectionPtr g_pConnPtr; if (FAILED(this->g_pConnPtr.CreateInstance("ADODB.Connection")))
{
AfxMessageBox("Create Instance failed!");
return false;
}
this->g_pConnPtr->ConnectionTimeout = 3 ;///创建Connection对象
// g_pConnPtr->Is
CString strSRC;
strSRC="Driver=SQL Server;Server=";
strSRC+="数据库IP地址";
strSRC+=";Database=";
strSRC+="你的数据库名称";
CString temp ;
temp.Format(";UID=%s ; PWD=%s" , "用户名" , "密码");
strSRC+= temp ;
_variant_t varSRC(strSRC);
// _variant_t varSQL(strSQL);
_bstr_t bstrSRC(strSRC);
try
{
if (FAILED(this->g_pConnPtr->Open(bstrSRC,"","",-1)))
{
AfxMessageBox("Can not open Database!");
this->g_pConnPtr.Release();
return false;
}
}
catch(_com_error e)
{
AfxMessageBox("数据库服务器连接失败!\n");
return false;
}
return true ;
Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Psaaword=sa; Initial Catalog=pubs
忘记写Password=sa了,因为我建的数据库有密码!!
最后得感谢竹叶青的软件,试过字符串连接数据库是没问题的,就顺便复制了软件里open的代码,哪知道居然连接成功,最后仔细比较了下,原来是参数出问题!