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 );
_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
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 );
_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
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
已经解决,是软件的安装问题