博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
delphi批量存入多媒体字段 遇到内存溢出的坑
阅读量:6036 次
发布时间:2019-06-20

本文共 1415 字,大约阅读时间需要 4 分钟。

最近delphi做一个小工具其中一个需求要把上W张照片存入数据库多媒体字段。

程序转到1,2W的时候即内在溢出了。最多一次转了3W张照片。很简单的一段代码后来仔细检查发现其中的坑。

下面放上代码

1   with DMConn.AdsEdit do 2   begin 3     Active := False; 4     CommandText := 'SELECT ID, Data, Ext FROM Table where 1=2'; 5     Active := True; 6   end; 7    8   with DMDst.UniQuery do 9   begin10     Active := False;11     SQL.Clear();12     SQL.Add(vSql);      13     Active := True;  14     while not Eof do15     begin16       vFile := vPath + DMDst.UniQuery.FieldByName('PATH').AsString;17       vNewID := DMDst.UniQuery.FieldByName('NewID').AsString;18       gg.Str.Replace(vFile, '/', '\');19       vPersonID := ExtractFileNameNoExt(vFile);20 21       if FileExists(vFile) and (DMConn.GetSQLValueInt('SELECT count(*) FROM Table where ID = ' + QuotedStr(vNewID)) <= 0) then22       begin23         try24           with DMConn.AdsEdit do25           begin26             Edit;27             Append;28             FieldByName('ID').AsString := vNewPersonID;29             FieldByName('Ext').AsString := ExtractFileExt(vFile);30             TBlobField(FieldByName('Data')).LoadFromFile(vFile);31             Post;32           end;33         finally34         end;35       end;36       Next;37     end;

注意:

'SELECT ID, Data, Ext FROM Table where 1=2'; 这段代码中的where 1=2就是这个where加上这后进程内存一直保持在30M左右不加这个where内在就一直不停增长,直到内存溢出。感觉不加这一句,每次添加的照片就增加到

DMConn.AdsEdit里面了。

转载于:https://www.cnblogs.com/DevMuYuer/p/10177320.html

你可能感兴趣的文章
存储过程中调用webservice
查看>>
神奇语言 python 初识函数
查看>>
Windows安装Composer出现【Composer Security Warning】警告
查看>>
四 指针与数组 五 函数
查看>>
硬盘空间满了
查看>>
dutacm.club Water Problem(矩阵快速幂)
查看>>
深入JVM内核--GC算法和种类
查看>>
iOS的AssetsLibrary框架访问所有相片
查看>>
MySQLdb的安装
查看>>
读书笔记三
查看>>
数论 - 最小乘法逆元
查看>>
企业架构研究总结(22)——TOGAF架构开发方法(ADM)之信息系统架构阶段
查看>>
接口测试(三)--HTTP协议简介
查看>>
周志华《机器学习》课后答案——第4章.决策树
查看>>
frameset分帧问题
查看>>
特殊样式:ime-mode禁汉字,tabindex焦点
查看>>
linux
查看>>
Layout父元素点击不到的解决办法
查看>>
【面试次体验】堆糖前端开发实习生
查看>>
基于apache实现负载均衡调度请求至后端tomcat服务器集群的实现
查看>>