博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
delphi批量存入多媒体字段 遇到内存溢出的坑
阅读量:5992 次
发布时间: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

你可能感兴趣的文章
git reset --hard 回滚以后 以后怎么再回去?
查看>>
【转】测试趋势之我的观点
查看>>
静态和动态链接
查看>>
500 OOPS: vsftpd: cannot locate user specified in 'chown_username':whoever
查看>>
解锁redis锁的正确姿势
查看>>
Kylin如何进行JDBC方式访问或者调用
查看>>
学习jQuery
查看>>
REST服务开发实战,互联网营销
查看>>
Cocos Creator JS web平台复制粘贴代码(亲测可用)
查看>>
ELF文件整体格式小结
查看>>
linux 下的 多线程http 下载器
查看>>
[转载]分享WCF聊天程序--WCFChat
查看>>
Win2008 Server系统安装打印服务器与配置
查看>>
JAX-RS开发 hello world
查看>>
题目:请实现一个函数,将一个字符串中的空格替换成“%20”
查看>>
shell 的语法
查看>>
第三章 logstash - 输入插件之tcp与redis
查看>>
C# 实现数字字符串左补齐0的两种方法
查看>>
JPA 映射单向多对一的关联关系
查看>>
明年暑假去培训PHP
查看>>