用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();
//初始化数据库连接对象
_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();