请教ADO连接SQL SERVER2008使用Windows身份验证无法连接

时间:2020-12-01 06:34:05
使用VS2010 连接已经建好的数据库,使用windows身份验证连接,一直出错,请教各位连接字符有什么问题?
void CQuery::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
try
{
CoInitialize(NULL);
UpdateData(TRUE);
if (m_id =="")
{
AfxMessageBox(_T("卡名不能为空"));
return;
}
_ConnectionPtr pconnect(_uuidof(Connection));
_RecordsetPtr record(_uuidof(Recordset));
_CommandPtr comd(_uuidof(Command));
_bstr_t strConnect="Provider=SQLOLEDB;Data Source=PC_201508171547\\SQLEXPRESS;AttachDbFilename=F:\\Database\\card.mdf;Trusted_Connection = Yes;Connect Timeout=30;User Instance=True";
pconnect->Open(strConnect,"","",adModeUnknown );


comd->PutActiveConnection(_variant_t((IDispatch*)pconnect));
CString cmda=_T("");
cmda="select * from cardinf where card_id ='";
cmda+=m_id;
cmda+="'";
comd->CommandText=_bstr_t(cmda);
record = comd->Execute(NULL,NULL,adCmdText);
if (record!=1)
{
m_name=(char *)(_bstr_t)record->GetCollect("card_name");
m_id=(char *)(_bstr_t)record->GetCollect("cad_id");
m_address=(char *)(_bstr_t)record->GetCollect("card_add");
UpdateData(FALSE);
}
else
{
m_name = "";
m_id = "";
m_address = "";
UpdateData(FALSE);
AfxMessageBox(_T("查询不到该卡信息!"));
}
record->Close();
pconnect->Close();
comd.Release();
record.Release();
pconnect.Release();
CoUninitialize();
}
catch (_com_error& e)
{
CString strMsg;
strMsg.Format(_T("错误描述:%s\n错误消息:%s"), 
(LPCTSTR)e.Description(),
(LPCTSTR)e.ErrorMessage());
AfxMessageBox(strMsg);
}


}

3 个解决方案

#1


连接字符是这个
_bstr_t strConnect="Provider=SQLOLEDB;Data Source=PC_201508171547\\SQLEXPRESS;AttachDbFilename=F:\\Database\\card.mdf;Trusted_Connection = Yes;Connect Timeout=30;User Instance=True";
        pconnect->Open(strConnect,"","",adModeUnknown );

#2


在64位Windows下:
64位exe和dll在目录c:\windows\sys tem32目录下;
32位exe和dll在目录c:\windows\sys wow64目录下;
所以要注意:
    在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。
    且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
    在win64位系统下设置32位程序使用的数据库别名要用c:\windows\syswow64\cliconfg.exe
    在win64位系统下设置32位程序使用的系统DSN要用c:\windows\syswow64\odbcad32.exe

#3


已经解决,是软件的安装问题

#1


连接字符是这个
_bstr_t strConnect="Provider=SQLOLEDB;Data Source=PC_201508171547\\SQLEXPRESS;AttachDbFilename=F:\\Database\\card.mdf;Trusted_Connection = Yes;Connect Timeout=30;User Instance=True";
        pconnect->Open(strConnect,"","",adModeUnknown );

#2


在64位Windows下:
64位exe和dll在目录c:\windows\sys tem32目录下;
32位exe和dll在目录c:\windows\sys wow64目录下;
所以要注意:
    在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。
    且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
    在win64位系统下设置32位程序使用的数据库别名要用c:\windows\syswow64\cliconfg.exe
    在win64位系统下设置32位程序使用的系统DSN要用c:\windows\syswow64\odbcad32.exe

#3


已经解决,是软件的安装问题