我在A、B机器上使用同一个工程test.dsp,其中在A、B机器上连接ORACLE数据库都成功,但是在执行同一个函数的时候遇到了问题:
在A机器上,执行数据库操作函数可以返回相应的数据,并成功;在B机器上执行函数的时候却不成功,出现异常情况(catch里面)。并A、B机器连接的数据库都是同一个数据库。执行的函数如下:
  void GetAA(TrunkInfo * pinfo){
 
char callee[26];
char caller[26];
char m_path[100];
char strSQL[200];
memset(strSQL,0,200);
memset(m_path,0,100);
int id = -1;
sprintf(caller,"%s",pinfo->CallerID.Caller_in);
sprintf(callee,&pinfo->CalleeID.Callee_in[4],7);
sprintf(callee,"%s",callee);
strcpy(strSQL,"Select * From Table(Select Cast(FUN_NEWCRBT('");
strcat(strSQL,callee);
strcat(strSQL,"','");
strcat(strSQL,caller);
strcat(strSQL,"') as CRBT) from dual)");
//说明:一旦返回的语音路径为空时,Oracle将以错误处理,实际数据库连接完好,所以不能以这个为断开依据20050128
try{
       m_ado->ExcuteQuery(strSQL);  
id = m_ado->GetInt("ID");
m_ado->GetString("RINGPATH",m_path);
 
}catch (_com_error e)//异常处理  //7月
 {
strcpy(pinfo->PlayFile1,""); 
pinfo->FileID = -1; //语音id//借用字段
pinfo->state=TRUNK_ENDQUEDB;
ISM_WriteLog(pinfo->inChanID,"用户资料在数据库为空,没有查询到语音.");
        //m_pData->ismData.IsDBConnect = false ;
return ;
}  strcpy(pinfo->PlayFile1,m_path);
pinfo->FileID=id;
pinfo->state=TRUNK_ENDQUEDB;

}

解决方案 »

  1.   

    我也想知道这是怎么回事,是不是需要在机器上安装ADO服务包呢?关注,顺便Up一下
      

  2.   

    如果确定是客户端问题,可以重新安装mdac2.8和oracle client
      

  3.   

    下载的mdac体积太大了吧,用户使用的时候还需要安装这么大的一个安装包?是不是必须啊,但是我不用SQL Server2000的话,改为ACCESS就没有这个问题啊?期待回答
      

  4.   

    ACCESS如果客户端没有安装ACCESS的话,也要下载MDAC