我在C ++ builder XE3上使用SQLite数据库有一个简单的DBExpress应用程序。
UI有一些DBGrids和DBNavigators。 DBGrids连接到连接到TClientDataSets的TDataSource。 TClientDataSets从TDataProviders获取数据,这些数据从TSQLDataSet获取数据。每个人都连接到TSQLConnection。
应用程序正常工作,除非数据由另一个数据库组件发布,与应用程序无关。要获得新的远程'数据,我必须单击导航器上的“刷新”按钮两次(2)。
我使用以下代码获得相同的行为:
mClientDBSession.insertImageFile(getFileNameNoPath(f), "Note..");
DBNavigator1->BtnClick(nbRefresh);
DBNavigator1->BtnClick(nbRefresh);
mClientDBSession是与DBExpress无关的数据库对象。 insertImageFile将db记录直接插入到SQLite数据库中并且是同步的,所以我知道DB在函数退出后得到了数据。
奇怪的是,如果我没有两次调用BtnClick(nbRefresh),那么数据就不会更新,而是看着DBGrid。
理想情况下,我会有一个计时器,每隔一段时间就会使用新的服务器数据自动更新DBExpress组件。