VC++下使用ADO编写数据库程序(3)
其中CommandText是命令字串,通常是SQL命令。 
参数RecordsAffected是操作完成后所影响的行数, 
参数Options表示CommandText中内容的类型,Options可以取如下值之一: 
adCmdText:表明CommandText是文本命令 
adCmdTable:表明CommandText是一个表名 
adCmdProc:表明CommandText是一个存储过程 
adCmdUnknown:未知
例子:
_variant_t RecordsAffected;
m_pConnection->Execute("UPDATE users SET old = old+1",&RecordsAffected,adCmdText); 
5.调用存储过程
(1)、利用_CommandPtr
_CommandPtrm_pCommand;
m_pCommand.CreateInstance(__uuidof(Command));
m_pCommand->ActiveConnection = m_pConnection;  // 将库连接赋于它
m_pCommand->CommandText = "Demo";  
m_pCommand->Execute(NULL,NULL, adCmdStoredProc);  
(2)、直接用_ConnectionPtr直接调用(见4.(2))
6.遍历数据库中的所有表名 _ConnectionPtr m_pConnect; 
_RecordsetPtr pSet; 
HRESULT hr; 
try 
{  
hr = m_pConnect.CreateInstance("ADODB.Connection");    
if(SUCCEEDED(hr))  
{   
CString dd;   
dd.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s",file);   
hr = m_pConnect->Open((_bstr_t)dd,"","",adModeUnknown);   
pSet = m_pConnect->OpenSchema(adSchemaTables);      
while(!(pSet->adoEOF))   
{         
//获取表格    
_bstr_t table_name = pSet->Fields->GetItem("TABLE_NAME")->Value;
//获取表格类型        
_bstr_t table_type = pSet->Fields->GetItem("TABLE_TYPE")->Value;
//过滤一下,只输出表格名称,其他的省略
if ( strcmp(((LPCSTR)table_type),"TABLE")==0){
CString tt;
tt.Format("%s",(LPCSTR)table_name);     
AfxMessageBox(tt);        
}       
pSet->MoveNext();    
}   
pSet->Close();  
}  
m_pConnect->Close();  
}catch(_com_error e)///捕捉异常 
{  
CString errormessage;  
errormessage.Format("连接数据库失败!rn错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);
return -1;
}

