WEB开发网
开发学院软件开发VC VC中使用ADO调用存储过程实现方法 阅读

VC中使用ADO调用存储过程实现方法

 2008-11-12 19:26:39 来源:WEB开发网   
核心提示: @pout1 ( char(10), 输入/输出) @RETURN_VALUE是第0个参数,@pin1是第1个,VC中使用ADO调用存储过程实现方法(2),依此类推 以上信息可以在SQL 的查询分析器中看到,注意,这里要把pConn设定成adUseClient型pConn->Curs

@pout1 ( char(10) , 输入/输出) 

@RETURN_VALUE是第0个参数,@pin1是第1个,依此类推

以上信息可以在SQL 的查询分析器中看到,注意,这些参数的顺序很重要

3.调用的前期准备

这就不多说了,什么import 库阿,建立连接阿,什么的,不多说了。

假定连接是pConn

注意,这里要把pConn设定成adUseClient型

pConn->CursorLocation =adUseClient;

下面我要贴具体的代码了,为了精简所贴的代码,我把所有的捕获异常都没贴出来(try catch)

4.使用Refresh的方法来调用

先定义一些变量

  _CommandPtr   pCmd = NULL;
  _RecordsetPtr  pRecordset = NULL;

初试化他们

  pCmd.CreateInstance(__uuidof(Command));
  pRecordset.CreateInstance(_uuidof(Recordset));
  pCmd->ActiveConnection = pConn;
  pCmd->CommandType = adCmdStoredProc;
  pCmd->CommandText=_bstr_t(_T("sp_1")); //SP Name

然后给那些input参数赋值  pCmd->Parameters->Refresh(); 
 
pCmd->Parameters->Item[_variant_t(_bstr_t("@pin1") )]->Value=_variant_t(3); 
  pCmd->Parameters->Item[_variant_t(_bstr_t("@pin2") )]->Value=_variant_t("DD"); 

这个refresh一定要有,调SP

  pRecordset = pCmd->Execute(NULL,NULL,adCmdStoredProc);
  int  retVal = -1;
  _variant_t  VretVal ;
  //GetRetVal
  VretVal = pCmd->Parameters->GetItem(short(0))->Value;
 
retVal = VretVal.lVal;
 
Info.Format(_T("The Return Value is : %d"),retVal);
 
MessageBox(Info);
  //output1
 
VretVal = pCmd->Parameters->GetItem(short(3))->Value;
 
retVal = VretVal.lVal;
 
Info.Format(_T("The output1 Value is : %d"),retVal);
 
MessageBox(Info);
 
//@pout2
 
VretVal = pCmd->Parameters->GetItem(short(4))->Value;
  Info= (LPCTSTR)_bstr_t(VretVal);
 
CString info1;
 
info1.Format(_T("The output2 Value is : %s"),Info);
 
MessageBox(info1);
  //取记录集里面的内容
  if (pRecordset->adoBOF && pRecordset->adoEOF)
  {
   MessageBox("没有符合条件的记录存在!","提示");
   if(pRecordset != NULL && pRecordset->State)
   {
  pRecordset->Close();
  pRecordset = NULL; 
  }
   pCmd.Detach();
   return;
  }
 
 pRecordset->MoveFirst();
 
 for(;!pRecordset->adoEOF;pRecordset->MoveNext())
  {
   VRectVal = pRecordset->GetCollect(_T("Name"));
   StrVal = (LPCTSTR)_bstr_t(VRectVal);
   m_list.AddString(StrVal);
  }
 if(pRecordset != NULL && pRecordset->State)
 {
  pRecordset->Close();
  pRecordset = NULL; [Page]
 }

最后pCmd.Detach();

上一页  1 2 3 4  下一页

Tags:VC 使用 ADO

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接