用ADO的 _ConnectionPtr不创办数据源,连接SQL Server数据库

用ADO的 _ConnectionPtr不创建数据源,连接SQL Server数据库
//初始化数据库连接对象
_ConnectionPtr pConn("ADODB.Connection");

 //定义数据库连接字符串  
_bstr_t Connection = "Provider=SQLOLEDB;Server=127.0.0.1;Database=LoginDemo;Uid=; PWD= ";

//打开数据库连接
pConn->Open(Connection, "", "", adModeUnknown);


我连接的时候把 LoginDome.mdf 这个数据库文件和日志文件LoginDemo_log.ldf放在工程下面。
然后代码中用上面的语句访问。 可总是失败。是什么原因啊??

连接字串中的 用户名UID 和密码PWD 怎么设置啊???  

高水给个范例吧。。

------解决方案--------------------

HRESULT hr;
CString strDBSource;

_ConnectionPtr m_pConn;
_CommandPtr m_pCommand;
_RecordsetPtr m_pRecordset;

//SQL Server数据库的连接串
strDBSource="Provider=SQLOLEDB.1;Password=abcde;Persist Security Info=True;User ID=sa;Initial Catalog=wzWebLab;Data Source=.;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=LIUZG;Use Encryption for Data=False;Tag with column collat"
_bstr_t strCnn(strDBSource); 

try{
hr=m_pConn.CreateInstance("ADODB.Connection");
if(FAILED(hr)){
return FALSE;
}
}catch(_com_error &e){
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
}catch(...){
return FALSE;
}
m_pConn->ConnectionTimeout=15;
m_pConn->Mode=adModeReadWrite;
m_pConn->IsolationLevel=adXactIsolated;
m_pConn->Attributes&=!adXactCommitRetaining;
m_pConn->Attributes&=!adXactAbortRetaining;

try{
m_pConn->Open(strCnn,"","",NULL);
}
catch(_com_error &e){
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());

return FALSE;
}catch(...){
return FALSE;
}

try{
m_pCommand.CreateInstance("ADODB.Command" ); // creating command object
} catch(...){
return false;
}

try{
hr=m_pRecordset.CreateInstance("ADODB.Recordset");
 }catch(...){
return false;
 }
 
 //Recordset例子
_variant_t vConn;
_variant_t sqlStr=_T("select * from table1");
vConn=(IDispatch*) m_pConn;
try{
hr=m_pRecordset->Open(sqlStr,vConn,adOpenStatic,adLockOptimistic,-1);
if(!FAILED(hr)){
while (!m_pRecordset->EndOfFile){
VARIANT varTemp;
varTemp=m_pRecordset->Fields->Item["FldName"]->Value;
CString mValue=varTemp.bstrVal;
m_pRecordset->MoveNext();
}
}
}catch(_com_error &e){
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
TRACE("%s\n",(LPCSTR) bstrDescription);
}catch(...){
}
m_pRecordset->Close();

//Command例子
try{// 
passing string value as argument to stored procedure

_bstr_t bstrProc=( L"storeProcedureName" ); //Stored procedure name

_variant_t vtEmpty (DISP_E_PARAMNOTFOUND, VT_ERROR);
_variant_t vtEmpty2(DISP_E_PARAMNOTFOUND, VT_ERROR);
pCOMBUFFER->m_pCommand->ActiveConnection = m_pConn;
pCOMBUFFER->m_pCommand->CommandText = _bstr_t( bstrProc ); // passing the stored procedue
pCOMBUFFER->m_pCommand->CommandType = adCmdStoredProc; // type
pCOMBUFFER->m_pCommand->Parameters->Refresh(); // passing string value as argument to stored procedure

m_pCommand->Parameters->Item[ _variant_t( (long) 1 ) ]->Value = 
_variant_t( (LPCTSTR)mParam1);

m_pRecordset = m_pCommand->Execute( &vtEmpty, &vtEmpty2, adCmdStoredProc ); 

VARIANT varTemp;
varTemp=m_pRecordset->Fields->Item["FldName"]->Value;
mPwd=varTemp.bstrVal;
m_pRecordset->Close();