我在我的 VCL 表单上使用 DBGrid。网格中填充了来自TADOConnection
查询的记录。从语义上看,它看起来像这样:
- 建立与数据库的连接(SQL Server);
- 将一些记录提取到
TADODataSet
数据集中; - 将数据集与
TDataSource
对象连接; - 将对象连接
DataSource
到 DBGrid。
我的网格会立即发布,这意味着编辑后的数据会立即发布到数据库中。一切正常,直到连接关闭(网络中断,笔记本电脑的盖子关闭等)
当连接丢失时,我无法在 Grid 中编辑记录,这导致EOleException
(TCP PROvider:现有连接被远程主机强行关闭)abd EDatabaseError
(通信链路故障)。
我想捕捉连接丢失并重新建立连接,但我不知道如何。我检查了网格的所有数据特定事件,但问题出现的时间比任何网格事件都要早得多。
我认为问题出在数据集级别,但我不知道如何捕获异常。有谁知道如何检查数据集的可用性?然后我可以编写一些代码来重新连接。像这样的东西:
if not Assigned(DataSet) then
//reconnect
任何帮助将不胜感激。