由于
C++学习的需要,使用QT做了一个课程设计。但是在设计
数据库的操作时发现,无论是使用QSqlTableModel或者QSqlQuery类执行了响应的数据库操作,都有一定的延迟,具体表现为:
我将所有的信息呈现在了一个
QTableView控件里,借助了setModel成员函数链接到QSqlTableModel的对象。
然后可以在右边使用添加或者删除。期中添加和删除都是用的QSqlTableModel里的操作,而修改是用的QSqlQuery里的
exec函数执行的
SQL语句。在添加和删除完毕后,我是利用关闭
窗口再打开的方法企图重新刷新表格中的内容,在修改完成后,我是利用了select语句刷新表格中的内容。
但是
问题来了,在大规模的测试中,我发现,所有的数据库操作都是可以执行的,但是表格中却不一定能够正确刷新(即使使用ACCESS打开mdb文件发现内容实际上是已经变动了)。我发现的结果是,(以修改为例),在修改完成后,点击修改
按钮,程序弹出修改完成的提示,如果此时快速的点击确定,那么表格中的内容就很有可能
没有刷新。如果在弹出修改完成的提示后稍等个1~2秒,然后再点击确定,那么表格信息一般就已经被刷新了。我怀疑QSqlTableModel与数据库的连接间存在一个缓冲,或者是QSqlQuery在执行时有个缓冲,造成有一个微小的延迟。诚如是,请问这个刷新操作如何才能做到最优化(指尽量实时性?)
求大神解释下!
窗体:

主要的源码:含有表格窗体的代码: EmployeeWorkingWidget.cpp ,修改信息窗体的代码:AviInfoModifyWidget.cpp
添加信息窗体的代码:AviInfoInsertWidget.cpp
ODBC数据源信息:
源代码:
AviManager.rar (801 K) 下载次数:27 数据库文件:
mdb数据库文件.rar (11 K) 下载次数:8 工作人员登录密码和用户名:Employee