CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

DELPHI向ORACLE数据库大量插入照片出现的问题?在线等待!!!

楼主qiu963137(秋林)2004-08-01 11:39:33 在 Delphi / VCL组件开发及应用 提问

说明:  
          程序的目的是,从PASSENGER_PHOTO表往PASSENGER_PHOTO_HISTORY表中插入记录,但是两张表都有PHOTO字段,PHOTO字段存的是照片.  
   
  错误提示:  
          当PASSENGER_PHOTO表向PASSENGER_PHOTO_HISTORY表中插记录达到3000多条时,就出现以下错误。  
   
  ERROR   MESSAGE:  
        Project   DataInsert.exe   raised   exception   class   EDBEngineError   with   message   'Key   violation.  
  [Oracle][ODBC][Ora]ORA-03127:在活动操作结束之前不允许进行新的操作'.Process   stopped    
  Use   Step   or   Run   to   continue.  
   
   
  以下是我的代码:  
   
      With   Qty_Photo   do                 //打开PASSENGER_PHOTO表的所有记录  
          While   not   Eof   do  
          begin  
              s_flight   :=   Qty_Photo.FieldByName('flight').AsString;     //主键一的值  
              s_strt   :=   Qty_Photo.FieldByName('strt').AsString;             //主键二的值  
              s_bdno   :=   Qty_Photo.FieldByName('bdno').AsString;             //主键三的值  
   
              s_sql   :=   '';  
              s_sql   :=   'SELECT   COUNT(*)   FROM   PASSENGER_PHOTO_HISTORY   WHERE   ';  
              s_sql   :=   s_sql   +   'flight   =   '''   +   s_flight   ;  
              s_sql   :=   s_sql   +   '   and   strt   =   '''   +   s_strt   ;  
              s_sql   :=   s_sql   +   '''   and   bdno   =   '''   +   s_bdno   +   ''''   ;  
   
              Qty_Exec.Active   :=   False;  
              Qty_Exec.DatabaseName   :=   is_ServerName;  
              Qty_Exec.SQL.Clear;  
              Qty_Exec.SQL.Add(s_sql);  
              Qty_Exec.Active   :=   True;  
   
            //如果在PASSENGER_PHOTO_HISTORY   表中无冲突记录,则插入PASSENGER_PHOTO的记录  
              if   Qty_Exec.Fields[0].AsInteger   <   1   then          
                  begin  
                      try  
                          QTY_PHOTO_HISTORY.Append;  
                          QTY_PHOTO_HISTORY.FieldByName('FLIGHT').AsString   :=   Qty_Photo.FieldByName('FLIGHT').AsString;  
                          QTY_PHOTO_HISTORY.FieldByName('OFFDAY').AsDateTime   :=   Qty_Photo.FieldByName('OFFDAY').AsDateTime;  
                          QTY_PHOTO_HISTORY.FieldByName('STRT').AsString   :=   Qty_Photo.FieldByName('STRT').AsString;  
                          QTY_PHOTO_HISTORY.FieldByName('BDNO').AsString   :=   Qty_Photo.FieldByName('BDNO').AsString;  
                          QTY_PHOTO_HISTORY.FieldByName('CHECK_TIME').AsDateTime   :=   Qty_Photo.FieldByName('CHECK_TIME').AsDateTime;  
                          QTY_PHOTO_HISTORY.FieldByName('CHANNEL_NO').AsString   :=   Qty_Photo.FieldByName('CHANNEL_NO').AsString;  
                          TempStream   :=   TMemoryStream.Create;  
                          try  
                              TBlobField(FieldByName('PHOTO')).SaveToStream(TempStream);  
                              TempStream.Position   :=   0;  
                              TBlobField(QTY_PHOTO_HISTORY.FieldByName('PHOTO')).LoadFromStream(TempStream);  
                          finally  
                              TempStream.Free;  
                          end;  
                          QTY_PHOTO_HISTORY.Post;  
                      except  
                      end;  
                  end;  
              Next;       //下一条  
          end; 问题点数:0、回复次数:2Top

1 楼cronuz(cronus)回复于 2004-08-02 08:30:26 得分 0

是不是応該加上"commit"  
   
  with   QTY_PHOTO_HISTORY   do  
  begin  
      Database1.StartTransaction;  
      try  
          {插入记录操作}  
          Database1.Commit;   {成功}  
      except  
          Database1.Rollback;   {失敗}  
          raise;    
      end;  
  end;  
  Top

2 楼cjf0426(cjf0426)回复于 2004-08-03 09:48:30 得分 0

应该用事务控制  
  还有Stream不用在循环体内不断建立和释放  
   
  不过量过多时最好能分成几个事务操作Top

相关问题

  • 救火!各位大虾,怎样用delphi读取excle文件,并插入到oracle数据库中
  • delphi+mapx如何连接oracle数据库
  • jsp向oracle数据库插入图片出错!急!为什么?
  • 请问怎么把单引号插入到oracle数据库中?
  • vb连接oracle数据库的插入问题
  • oracle数据库其中一个表不能插入数据了
  • 关于插入oracle数据库4000字节的问题
  • PB向Oracle数据库插入日期的问题
  • 在JSP中用ORACLE数据库,插入ID号的问题
  • 插入ORACLE数据库时,日期型错误.???

关键词

  • sql
  • passenger
  • qty
  • bdno
  • photo
  • 插入
  • strt
  • 表
  • flight
  • fieldbyname

得分解答快速导航

  • 帖主:qiu963137

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo