Sql Delphi编辑DBGrid并以只读模式更新数据库?

Sql Delphi编辑DBGrid并以只读模式更新数据库?,sql,database,delphi,dbgrid,Sql,Database,Delphi,Dbgrid,因此,我有一个填充了SQL查询的DBGrid。我希望查询是只读的,这样在程序运行时表就不会被锁定。问题是当它设置为只读时,我根本无法编辑该表 我想做的是能够在只读模式下编辑DBGrid上的字段,然后一次更新它,这样我就不必让连接保持打开状态 但我不知道该怎么做。DBGrid没有OnChange事件,所以我不能每次更改单元格时都运行更新查询 有人有什么想法吗?这就是写这篇文章的确切原因。它允许您拍摄数据快照,将其存储在内存中,将其更新为实际数据集,然后轻松地将这些更新应用回原始数据库 有一个教程还

因此,我有一个填充了SQL查询的DBGrid。我希望查询是只读的,这样在程序运行时表就不会被锁定。问题是当它设置为只读时,我根本无法编辑该表

我想做的是能够在只读模式下编辑DBGrid上的字段,然后一次更新它,这样我就不必让连接保持打开状态

但我不知道该怎么做。DBGrid没有OnChange事件,所以我不能每次更改单元格时都运行更新查询


有人有什么想法吗?

这就是写这篇文章的确切原因。它允许您拍摄数据快照,将其存储在内存中,将其更新为实际数据集,然后轻松地将这些更新应用回原始数据库


有一个教程还不错。你可以在Embarcadero网站上找到另一本,也可以在Embarcadero网站上找到一本,Cary Jensen后来把它写成了一本书(你可以在亚马逊上找到,手头没有链接)。

这正是写这本书的原因。它允许您拍摄数据快照,将其存储在内存中,将其更新为实际数据集,然后轻松地将这些更新应用回原始数据库


有一个教程还不错。你可以在Embarcadero网站上找到另一个,也可以在Embarcadero网站上找到一个,Cary Jensen后来把它写成了一本书(你可以在Amazon上找到,手头没有链接)。

我已经完成了大量使用DBGrid和Query的其他工作。如果我使用TClientDataSet,我不需要重做所有事情吗?我真的不想那样做,不。这是一个更改数据集的问题,并将查询读取到ClientDataSet中。我将一个大量使用实际数据库存储数据输入行的应用程序转换为在大约一小时内使用ClientDataSet,这样它就可以在脱机(公文包)模式下工作。例如,我有一个按钮,允许您添加新行,尽管在执行查询后打开一个新查询并关闭它。在这种情况下,您不必执行新的查询来添加行;您只需在CD中插入
。请花点时间查看我为教程提供的链接,而不是在评论中提出其他问题。:-)你会读我贴的链接吗?我已经说过,
TClientDataSet
正是为您的问题设计的解决方案,但我不打算重写我已经链接的几个教程和文档,以试图说服您:-)其他人做得比我好得多,而且有比我多得多的空间来回答问题。我提到的切换到CDS的DB每天将数千行插入到一个包含约200万行的DB中,该DB连接到几十个其他表,并且工作正常。我已经完成了大量使用DBGrid和Query的其他工作。如果我使用TClientDataSet,我不需要重做所有事情吗?我真的不想那样做,不。这是一个更改数据集的问题,并将查询读取到ClientDataSet中。我将一个大量使用实际数据库存储数据输入行的应用程序转换为在大约一小时内使用ClientDataSet,这样它就可以在脱机(公文包)模式下工作。例如,我有一个按钮,允许您添加新行,尽管在执行查询后打开一个新查询并关闭它。在这种情况下,您不必执行新的查询来添加行;您只需在CD中插入
。请花点时间查看我为教程提供的链接,而不是在评论中提出其他问题。:-)你会读我贴的链接吗?我已经说过,
TClientDataSet
正是为您的问题设计的解决方案,但我不打算重写我已经链接的几个教程和文档,以试图说服您:-)其他人做得比我好得多,而且有比我多得多的空间来回答问题。我提到的切换到CD的DB每天向一个包含大约200万行的DB中插入数千行,该DB连接到几十个其他表,并且工作正常。为什么在保持连接打开时该表会被锁定?不应该。当你保持连接打开时,为什么表会被锁定?不应该。