0

我在我的 VCL 表单上使用 DBGrid。网格中填充了来自TADOConnection查询的记录。从语义上看,它看起来像这样:

  • 建立与数据库的连接(SQL Server);
  • 将一些记录提取到TADODataSet数据集中;
  • 将数据集与TDataSource对象连接;
  • 将对象连接DataSource到 DBGrid。

我的网格会立即发布,这意味着编辑后的数据会立即发布到数据库中。一切正常,直到连接关闭(网络中断,笔记本电脑的盖子关闭等)

当连接丢失时,我无法在 Grid 中编辑记录,这导致EOleExceptionTCP PROvider:现有连接被远程主机强行关闭)abd EDatabaseError通信链路故障)。

我想捕捉连接丢失并重新建立连接,但我不知道如何。我检查了网格的所有数据特定事件,但问题出现的时间比任何网格事件都要早得多。

我认为问题出在数据集级别,但我不知道如何捕获异常。有谁知道如何检查数据集的可用性?然后我可以编写一些代码来重新连接。像这样的东西:

if not Assigned(DataSet) then
    //reconnect

任何帮助将不胜感激。

4

0 回答 0