现象:
最近使用到QSqlTableModel与QTableView,其中使用setData函数后发现数据库并没有更新,
原因:
经过仔细排查发现,是因为在程序中用到了显示一部分列,而所显示的列中没有包含主键列,所以更新数据库无效,
解决方法:
显示一部分列时采用了重写QSqlTableModel类中的相关函数,然后调用
tableModal->SetSelectColQuery("select name, from table");
tableModal->select();
来实现,具体方法可以百度一下,此时将第一个语句改为:
tableModal->SetSelectColQuery("select name, id from table");
即在其中包含主键id即可。
如果不希望显示包含主键的列,则可以在数据表中不设置主键。