Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1712235
  • 博文数量: 263
  • 博客积分: 1218
  • 博客等级: 少尉
  • 技术积分: 2862
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-19 02:33
文章分类

全部博文(263)

文章存档

2020年(12)

2019年(2)

2018年(10)

2016年(1)

2015年(20)

2014年(115)

2013年(46)

2012年(37)

2011年(20)

分类: WINDOWS

2012-11-05 22:48:14

最近改的那个程序用TSimpleDataSet连接mysql数据库一直掉内存, 估计是当数据并没有改动,而且使用TSimpleDataSet.Update(0)更新数据库时,会造成内存泄露. 

猜测: 当update语句的数据与原来相同时,如:update t1 Set Name='a' where Name='a',mysql不会进行更新,而是会忽略,这个与其它数据库不同. 

而TSimpleDataSet.Update(0) 后面的参数0是表示更新不允许出错,就是必须要更新, 这样这里就出错了.

猜测这个是造成内存泄露的原因所在.

解决: 给TSimpleDataSet.Update()的参数是-1: TSimpleDataSet.Update(-1); 表示允许更新出错. 

可是经过自己之前的测试, TSimpleDataSet.Update(0)更新数据库一直都是成功的, 改成TSimpleDataSet.Update(-1)来试一下,如果更新数据库也都成功的话, 就用这个, 也许就能解决TSimpleDAtaSet查mysql数据库掉内存的问题了.(未经测试)

经测试上面是错的,不是这个原因, 是自己程序其它地方访问内存越界了. 但是TSimpleDataSet(-1)的参数用在mysql时,最好是-1.

阅读(1933) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~