首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AnyDac -如何从内存中的sqlite断开连接?

AnyDac -如何从内存中的sqlite断开连接?
EN

Stack Overflow用户
提问于 2013-07-15 21:55:37
回答 1查看 1K关注 0票数 0

我正在使用内存中的SQLite数据库和AnyDac在德尔菲XE2上.我注意到,即使在重新启动程序后忘记首先连接数据库时,我的查询仍然返回结果,这可能是由于AnyDac的自动连接功能造成的。事情是这样的,我想这也意味着内存中的数据库即使在程序本身结束后也会留在内存中,这是一种内存泄漏。

我查看了AnyDac文档并在网上搜索,但是我找不到任何方法来正确地使用AnyDac将从数据库中断开。我注意到,当我调用TADConnection的"close“方法时,sqlite似乎保持打开状态。我想我的内存数据库也是如此。

有人能告诉我如何以正确和安全的方式完全关闭、断开和删除内存中的SQLite数据库吗?

EN

回答 1

Stack Overflow用户

发布于 2013-07-16 10:18:09

ADConnection.Close完全删除内存中的SQLite DB.使用下一个ADConnection.Open,显式或隐式地创建新的空内存DB .

通过简单的测试可以很容易地证实这一点:

代码语言:javascript
复制
  ADConnection1.Open;
  ADConnection1.ExecSQL('create table TEST (A, B)');
  ADConnection1.ExecSQL('insert into TEST values (1, 2)');
  // show value of TEST.A
  ShowMessage(VarToStr(ADConnection1.ExecSQLScalar('select A from TEST')));
  ADConnection1.Close;
  ADConnection1.Open;
  // next statement generates exception - [FireDAC][Phys][SQLite] ERROR: no such table: TEST
  ShowMessage(VarToStr(ADConnection1.ExecSQLScalar('select A from TEST')));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17664633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档