分类: 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.