• 2069阅读
  • 6回复

[提问]请教一个数据库提交的问 [复制链接]

上一主题 下一主题
在线clickto
 

只看楼主 倒序阅读 楼主  发表于: 2018-11-27
我是使用Qt5.11,mingw版,使用QTableView配合QSqlTableModel来操作数据
通过 QSqlRecord record = model->record(1);
         record.setValue("field_1","new");
         model.setRecord(1,record);
这样的方式可以更新数据库,但是当我想要插入新数据时,通过
                            QSqlRecord record = model->record();
                            record.setValue("field_1","new");
                            model->insertRecord(model->rowCount(),record);
                            model->submitAll();
这样的代码进行操作,显示submitAll返回成功,但是数据库却没有添加任何记录。
直接用sql语句insert into是可以插入新数据的。
请问各位,有没有遇到过这样的问题,可能的原因是什么?
在线clickto

只看该作者 1楼 发表于: 2018-11-27
或者通过model的setData也是不行的。只要是通过model就不行,虽然它显示submitAll是成功的。
在线clickto

只看该作者 2楼 发表于: 2018-11-27
通过model删、改是可以的,就是不能插入。。。
离线stlcours

只看该作者 3楼 发表于: 2018-11-27
干嘛要使用二道贩子的功能?这样它就可以赚你的中间差价了。所以我直接使用SQL语句,想怎么样就怎么样,调试还方便。
离线kaon

只看该作者 4楼 发表于: 2018-11-27
试下model->insertRecord(-1,record);
在线clickto

只看该作者 5楼 发表于: 2018-11-27
关于model的各种接口都试过了,插入位置为-1也试过了,删改查都可以,都是 不能插入新数据。

没有主键冲突。反正就是不能。佷奇怪。应该可以排除代码的原因,submitAll的时候能够看到model的rowCount,而且也返回成功。唯一的解释可能是数据库的问题。
可是数据库没有什么特别的约束啊。

sql语句是可以的,但是,字段太多了啊,而且数据类型还不一样。。。

我就奇怪为什么不能新增数据。

离线hehui

只看该作者 6楼 发表于: 2018-11-30
试试insertRowIntoTable看看能不能成功

[virtual protected] bool QSqlTableModel::insertRowIntoTable(const QSqlRecord &values)
Inserts the values values into the currently active database table.
This is a low-level method that operates directly on the database and should not be called directly. Use insertRow() and setData() to insert values. The model will decide depending on its edit strategy when to modify the database.
Returns true if the values could be inserted, otherwise false. Error information can be retrieved with lastError().
快速回复
限100 字节
 
上一个 下一个