日期:2014-05-17  浏览次数:20576 次

使用ADO连接SQLServer2008出错!!!!
代码如下
hr=m_pConnection.CreateInstance("ADODB.Connection");
if(SUCCEEDED(hr))
{
_bstr_t strConnect = "Provider=SQLOLEDB.1;Password=;Persist Security Info=True;User ID=sa;Initial Catalog=student;Data Source=192.168.0.103";
m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnknown);

}
if(m_pConnection->State)
MessageBox(NULL,L"服务器连接成功",L"",MB_OK);
else
MessageBox(NULL,L"服务器连接失败",L"",MB_OK);
}
catch(_com_error e)
{
MessageBox(NULL,e.ErrorMessage(),L"",MB_OK);
ExitConnect();
}


好像是strConnect错误,提示未指定错误,试了网上好多方法都无效,不是未指定错误就是Idispatch #3164

已经搞了一天了,求大神解救啊啊!!!
SQL?Server 服务器

------解决方案--------------------
先确定:sql server 配置管理器里面的tcp/ip,named piped,sql browser服务开启了,然后确认一下你用这个配置手动登录sqlserver是否成功。如果都可以了,网上那些连接字符串你找一个对着来改。
------解决方案--------------------
--#1.先用企业管理器连下试试:实例:192.168.0.103;用户名:sa;密码:空
--#2.如果#1可以,修改一下密码为:1q2w3e4R,再试
--#3.如果还不行,修改连接串。从网上找一下。
------解决方案--------------------
前段时间刚好也用这个连,首先1楼说的必要的服务是一定要开启的,然后附上部分关键代码:
#import "C:\\Program Files\\Common Files\\System\\ado\\msado15.dll" no_namespace rename("EOF","EndOfFile")

_bstr_t strConnect="driver={SQL Server};server=192.168.*.*;Database=testDataBase;uid=sa;pwd=***";
::CoInitialize(NULL);
_ConnectionPtr m_pConnection(__uuidof(Connection));
_RecordsetPtr m_pRecordset(__uuidof(Recordset));//初始化指针

if(FAILED(m_pConnection.CreateInstance(__uuidof(Connection))))
{
printf("创建Connection对象时出错\n");
}
if(FAILED(m_pRecordset.CreateInstance(__uuidof(Recordset))))
{
printf("创建Recordset对象时出错\n");
}

try
{
QueryPerformanceCounter(&beginTime);
m_pConnection->Open(strConnect,"","",adModeUnknown);//连接数据库
QueryPerformanceCounter(&endTime);
time = (double)(endTime.QuadPart-beginTime.QuadPart)/(double)freq.QuadPart;
printf("连接数据库时间:%f\n",time);
}catch(_com_error e)
{
printf("连接数据库时出错\n");
}
try
{
m_pRecordset->Open(_variant_t("student"),_variant_t((IDispatch *)m_pConnection),adOpenKeyset,adLockOptimistic,adCmdTable);