如题,   我有一个程序, 原来在vc6.0下编译, 后移到.net下,编译过后,在运行过程中,当执行到调用数据库中的存储过程时,程序有时会关闭。 
  很郁闷的是,程序只是在有时候关闭,而不是每次都会关闭。各位大虾,这是什么原因呢???
困扰我很久的问题了

解决方案 »

  1.   

    try
    {
    pCom->Execute(NULL,NULL,-1);
    }
    catch(_com_error &e)

    CString errMsg=_com_util::ConvertBSTRToString(e.Description());
    if((errMsg.Left(9)=="ORA-03113")||
    (errMsg.Left(9)=="ORA-03114"))
    {
    LogInfo(errMsg+"\nSystem will try to RECONNECT","DB CONNECT fail ","NETWORK");
    if(!this->ConnectDB(LoadIniFile("DBSource"),LoadIniFile("UserID"),LoadIniFile("PWD")))
    {//Reconnect Fail
    LogInfo(strParaLog+"\n"+errMsg+"\nTry to reconnect FAIL","TRY-CONNECT-","NETWORK");
    return "ERROR: DB Connect Error.Try again";
    }else
    {//Reconnect OK!
    LogInfo(strParaLog+"\n"+errMsg+"\nTry to reconnect OK","TRY-CONNECT-","NETWORK");
    return "ERROR: Retry OK!    INPUT GO ON";
    }
    }else
    {
    LogStatus("log\\return_erro.log","\nCall_Error_ "+strParaLog ,false,false,0);
    return "ERROR: Call procedure error -"+tmpParaInfo[0].ProcName;
    }
    }
      

  2.   

    异常捕捉catch{}里面一般不会导致这种情况吧.我昨天遇到的一个情况:
    在oracle下用ado,执行pCom->Refresh()就会出现这种错误,去掉就好了.
      

  3.   

    各位 现在基本可以说是在执行 pCom->Execute(NULL,NULL,-1); 时程序僵死,是否与数据库有关呢?
    用的也是oracle, 可惜没有pCom->Refresh()语句。各位, 在什么情况下执行存储过程会出现这样的现象呢??