首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >此应用程序连接到数据库的最佳方式

此应用程序连接到数据库的最佳方式
EN

Stack Overflow用户
提问于 2009-04-03 19:07:35
回答 1查看 449关注 0票数 1

我有一个Delphi应用程序,它通过TTimer每隔60秒访问一个数据库(通常是MySql)。该应用程序或多或少是一个无人值守的公告栏。如果网络中断,应用程序需要继续运行,并在连接恢复时连接回数据库。通常它可能是通过宽带连接的,所以连接并不总是最好的。

我使用的是TAdoConnection组件。它在应用程序启动时打开,并保持打开状态。每当我需要进行新的查询时,我都会设置到打开的TAdoConnection的连接。但我发现如果有网络中断,这是不太可靠的。

在这种情况下,连接到数据库的最佳方式是什么?我见过将连接字符串直接构建到TAdoQuery中的方法。这是正确的方式吗?或者这是过度的资源密集型?有时我需要打开5-10个查询来获取所有信息。

或者在TTimer.OnTimer事件中执行此操作:

创建TAdoConnection

是否执行所有查询

免费TAdoConnection

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-04-03 19:18:02

您应该使用单个TAdoConnection对象,以避免为每个组件设置连接字符串。保持您的连接对象关闭,并在需要访问数据时将其打开。如下所示:

代码语言:javascript
复制
procedure OnTimer;
begin
  MyAdoConnection.Open;
  try
    // Data access code here
    ...
  finally
     MyAdoConnection.Close;
  end; 
end;

您还可以在MyAdoConnection.Open周围放置另一个try/except块,以捕捉网络不可用的情况。

关于问题的第二部分,最好是将所有数据访问组件放在需要运行数据访问过程时创建的数据模块中。然后,您可以将所有数据访问代码放在该数据模块中,并将其与其余代码分开。

您可以尝试在数据模块的OnCreate事件中打开连接,但在打开连接时要小心处理可能出现的异常。关闭OnDestroy事件中的连接。然后,您可以像这样使用该数据模块:

代码语言:javascript
复制
procedure OnTimer;
var myDataModule : TMyDataModule;
begin
  myDataModule  := TMyDataModule.Create;
  try
    // Data access code here
    myDataModule.DoSomeDatabaseWork;
  finally
     myDataModule.Free;
  end; 
end;
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/715246

复制
相关文章

相似问题

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