高分高手,ADO数据连接有关问题
高分求助高手,ADO数据连接问题
连接数据库为sqlserver2000,执行到ADOConn-> Open时出现异常,e.ErrorMessage()信息为IDispatch error #3149,连接字符串是没问题的,已经在vb里用ado.connection对象连接测试成功!另外sqlserver2000的安全性设置为sqlserver和windows,安全性设置是没问题的,大家帮忙看下是什么问题,谢谢了!
------解决方案--------------------
vc菜单中有手动连接数据库的,连接通后,把编辑框中的文本复制过来,贴在strConnect中。
------解决方案--------------------
这是我的连接SQL2000的方法,楼主可以参考下:
_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 ;
------解决方案--------------------
http://blog.sina.com.cn/s/blog_438414c901008z25.html
该死的:IDispatch error #3149!
Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Psaaword=sa; Initial Catalog=pubs
忘记写Password=sa了,因为我建的数据库有密码!!
------解决方案--------------------
用这个软件测试下连接字符串和SQL。
- C/C++ code
_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,安全性设置是没问题的,大家帮忙看下是什么问题,谢谢了!
------解决方案--------------------
vc菜单中有手动连接数据库的,连接通后,把编辑框中的文本复制过来,贴在strConnect中。
------解决方案--------------------
这是我的连接SQL2000的方法,楼主可以参考下:
_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 ;
------解决方案--------------------
http://blog.sina.com.cn/s/blog_438414c901008z25.html
该死的:IDispatch error #3149!
Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Psaaword=sa; Initial Catalog=pubs
忘记写Password=sa了,因为我建的数据库有密码!!
------解决方案--------------------
用这个软件测试下连接字符串和SQL。