在学习过程中,遇到了如题的问题,一筹莫展中……不断地度娘,度娘~终于从csdn一贴子中获得启发!现贴出来,希望能帮到后来者:)
CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
_CommandPtr pCmd(__uuidof(Command));
pConn->ConnectionString="Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=PowerTransformer2.0;Data Source=PC\\SQLEXPRESS";
pConn->Open("","","",-1);
pRst=pConn->Execute("select * from ps_pt_device",NULL,adCmdText);
//pRst->Open("select * from authors",_variant_t((IDispatch*)pConn),
// adOpenDynamic,adLockOptimistic,adCmdText);
// pCmd->put_ActiveConnection(_variant_t((IDispatch*)pConn));
// pCmd->CommandText="select * from authors";
// pRst=pCmd->Execute(NULL,NULL,adCmdText);
while(!pRst->rsEOF)
{
((CListBox*)GetDlgItem(IDC_LIST1))->AddString(
(_bstr_t)pRst->GetCollect("dname"));
pRst->MoveNext();
}
pRst->Close();
pConn->Close();
pCmd.Release();
pRst.Release();
pConn.Release();
CoUninitialize();
问题出在连接字符串上,细心的同学发现我这里的Datasource是PC \\SQLEXPRESS,写到这里基本上都明白了吧,第一个slash是转义字符,两个slash在C语言里表示一个slash的意思。因此如果连接字符串里存在slash,一定要注意不要写成一个,否则就会出现runtime error的错误!