使用VC在ADO中访问存储过程的方法

void  CADORecordset::AddNewFileNode(CString ShowName ,  char   *  ReallyName, long   & Id, int  root)
{    
    _CommandPtr pIDCommand;
    pIDCommand.CreateInstance(__uuidof(Command));

    pIDCommand
->ActiveConnection = m_pConnection;//连接字符串
    pIDCommand->CommandText = "pr_AddNew";//存储过程名
    pIDCommand->CommandType = adCmdStoredProc;//标记该操作为存储过程

    _ParameterPtr m_pParam;

    m_pParam 
= pIDCommand->CreateParameter("@reid",adInteger,adParamInputOutput,sizeof(int),0);//添加参数该参数为一个inputoutput类型的int参数   
    pIDCommand->Parameters->Append(m_pParam);

    m_pParam 
= pIDCommand->CreateParameter("@ReallyName",adVarChar,adParamInputOutput,128,ReallyName); //添加参数该参数为一个inputoutput类型的VarChar(128)参数  
    pIDCommand->Parameters->Append(m_pParam);

    m_pParam 
= pIDCommand->CreateParameter("@nodeid",adInteger,adParamInput,sizeof(int),root);// 该参数为input类型的int参数,参数的值在root中
    pIDCommand->Parameters->Append(m_pParam);

    m_pParam 
= pIDCommand->CreateParameter("@ShowName",adChar,adParamInput,ShowName.GetLength(),ShowName.GetBuffer(0)); //数为input类型的char,参数的值在,ShowName.GetBuffer(0)中,该用法要回收
    ShowName.ReleaseBuffer();//回收
    pIDCommand->Parameters->Append(m_pParam);
    
    pIDCommand
->Execute(NULL,NULL,adCmdStoredProc);//执行存储过程
        
    Id 
= pIDCommand->Parameters->GetItem((long)0)->Value;//根据参数在参数表中的位置取值,当前参数是第一个,所以值为0 
    CString _reallyname= pIDCommand->Parameters->GetItem((long)1)->Value;
        
    pIDCommand.Detach();
//使用完毕后释放资源

    sprintf(ReallyName,_reallyname.Trim().GetBuffer(
0));
    _reallyname.ReleaseBuffer();
    
    ……
    
                      
return ;
}

 

你可能感兴趣的:(使用VC在ADO中访问存储过程的方法)