qt作为一种跨平台开发套件。使用中有不少坑。
1、 qsqltablemodel 只能插入一条问题:
submit成功,但是数据库里只有第一条存进去了。
问题原因:
没写后面两条。尤其是倒数第二,手动提交的设置。
如果不写后两句,每次只插入一条是没问题的。
2、qsqltablemodel 将sqlite数据库锁死问题
每次获取的表记录条数总是256条。实际大于256
sqlite3支持并发执行读事务,即可以同时开启多个进程/线程从数据库读数据
sqlite3 是 不支持并发执行写事务,即不能多个进程/线程同时往数据库写数据,它的写事务就是锁表,你无论开几个线程,只要写操作访问的是同一张表,最后在 sqlite3 那里都会被锁,实际上最后写操作都是顺序执行的。
【定位】
经过调试发现。连续对两个表无条件查询setfilter("") 、 select() ,没有问题。但如果用一个qsqltablemodel写一次,再用另一个qsqltablemodel无条件读下setfilter(""),百分百锁库。如果第二次有条件查询setfilter("id=1") 就不锁。
sqlite被锁后。 qsqltablemodel 的rowcount()就返回256. 没有别锁就返回正确的记录条数。