我是调试程序时,发生这个问题的。 
我用的是c++builder6和oracle9i。当程序运行到一个事务提交时,就报这个错了。我连的是本地的oracle数据库。 
请问大家,这个该如何解决? 
谢谢!

解决方案 »

  1.   

    你对数据库操作的是不是insert 或update 或delete语句吗?
    可是存储过程?把代码帖出来才可以分析
      

  2.   

    我用的是sql语句。以下是部分源代码:        AnsiString sql3;       if(epdata.iPictNum==1)
           {
             sql3="insert into "+strConfig.strTabOwn+".vio_temp_img(lsh,zj1,zjlb1) values(:lsh,:zj1,:zjlb1)";
           }
           else if(epdata.iPictNum==2)
           {
             sql3="insert into "+strConfig.strTabOwn+".vio_temp_img(lsh,zj1,zjlb1,zj2,zjlb2,zj3,zjlb3,zj4,zjlb4) values(:lsh,:zj1,:zjlb1,:zj2,:zjlb2,:zj3,:zjlb3,:zj4,:zjlb4)";
           }
           EpDataModule->EpDataQuery2->Close();
           EpDataModule->EpDataQuery2->SQL->Clear();
           EpDataModule->EpDataQuery2->SQL->Add(sql3);       TFileStream * TempFile1,*TempFile2,*TempFile3,*TempFile4;
           TempFile1 = new TFileStream(epdata.strPicFile1,fmOpenReadWrite);
           TempFile1->Position=0;
           if(epdata.iPictNum==1)
           {
             TempFile2 = new TFileStream(epdata.strPicFile2,fmOpenReadWrite);
             TempFile2->Position=0;
           }
           EpDataModule->EpDataQuery2->Parameters->ParamByName("lsh")->Value=epdata.iLSH;
           EpDataModule->EpDataQuery2->Parameters->ParamByName("zj1")->LoadFromStream(TempFile1,ftBlob);
           EpDataModule->EpDataQuery2->Parameters->ParamByName("zjlb1")->Value=epdata.strZJLB;
           if(epdata.iPictNum==2)
           {
             EpDataModule->EpDataQuery2->Parameters->ParamByName("zj2")->LoadFromStream(TempFile2,ftBlob);
             EpDataModule->EpDataQuery2->Parameters->ParamByName("zjlb2")->Value=epdata.strZJLB;         TempFile3 = new TFileStream(epdata.strPicFile3,fmOpenReadWrite);
             TempFile3->Position=0;
             TempFile4 = new TFileStream(epdata.strPicFile4,fmOpenReadWrite);
             TempFile4->Position=0;
             EpDataModule->EpDataQuery2->Parameters->ParamByName("zj3")->LoadFromStream(TempFile3,ftBlob);
             EpDataModule->EpDataQuery2->Parameters->ParamByName("zjlb3")->Value=epdata.strZJLB;
             EpDataModule->EpDataQuery2->Parameters->ParamByName("zj4")->LoadFromStream(TempFile4,ftBlob);
             EpDataModule->EpDataQuery2->Parameters->ParamByName("zjlb4")->Value=epdata.strZJLB;
           }
           EpDataModule->EpDataQuery2->ExecSQL();       EpDataModule->EpDataConn->CommitTrans();//运行到该处就出错了
      

  3.   

    ORA-12571: TNS:packet writer failure 
    Cause: An error occurred during a data send.
    Action: Not normally visible to the user. For further details, turn on tracing and reexecute the operation.似乎是执行操作运行超时了,数据库连接时间设置为多少?可以把timeout值调大些再试,或者试一下减少事务的数据传输量看看