BOOL CTIDB::SaveFileProc(CString strVoxFileName,CString strTableName,CString strField)
{
_ParameterPtr m_param;
CString strTable = "CTISysVoxFile";
long  Number = 8;//VoxNumber

// m_param = m_Cmmd ->CreateParameter("Table_Name",adVarChar,adParamInput,50,_variant_t(strTable));
// m_Cmmd ->Parameters ->Append(m_param);
m_param = m_Cmmd ->CreateParameter("VoxNumber",adBigInt,adParamInput,4,_variant_t(Number));
m_Cmmd ->Parameters ->Append(m_param);

m_param = m_Cmmd ->CreateParameter("VoxName",adVarChar,adParamInput,strVoxFileName.GetLength() + 1,_variant_t(strVoxFileName));
m_Cmmd ->Parameters ->Append(m_param); m_param = m_Cmmd ->CreateParameter("Voxbin",adVarBinary,adParamInput,m_nFileLen,m_varBLOB);
m_Cmmd ->Parameters ->Append(m_param); m_Cmmd ->CommandText = _bstr_t("AddVoxFile1");
m_Cmmd ->ActiveConnection = this ->m_pCn;
m_Cmmd ->CommandType = adCmdStoredProc; try
{
m_Cmmd->Execute(NULL,NULL, adCmdStoredProc); 
m_param.Detach();
m_param = NULL;
//m_Cmmd->Parameters->Delete(m_param);
}
catch(_com_error *e)
{
AfxMessageBox(e ->Description());
return false;
}
return TRUE;}当我多次调用上面的函数时出错(第二次调用),如果调用一次是没问题的多调用次就不行,不知为什么请个位大侠指点!!!

解决方案 »

  1.   

    m_Cmmd->Execute(NULL,NULL, adCmdStoredProc); 
    就这个地方出错
      

  2.   

    1. 
    BOOL CTIDB::SaveFileProc(CString strVoxFileName,CString strTableName,CString strField)
    {
    _ParameterPtr m_param;
    CString strTable = "CTISysVoxFile";
    long  Number = 8;//VoxNumber
             
             // 你的问题出在参数上, 第一次调用时,m_Cmmd建了参数. 第二次又重复的创建参数.
             // 所以在创建参数之前,先将原来的清掉.
             m_Cmmd->Parameters->Clear();
    2. 此两句纯属多余.
    m_param.Detach();
    m_param = NULL;
      

  3.   

    不对呀
             // 所以在创建参数之前,先将原来的清掉.
             m_Cmmd->Parameters->Clear();还是有错呀,Clear不是Parameters的成员是为什么呀