我有下面的代码(它是一个函数),我想在调用它时向数据库中插入500个值。
QSqlDatabase::database().transaction();
query.prepare("INSERT INTO datatable (Name, age, data1, data2, data3, data4, data5)"
"VALUES (?, ?, ?, ?, ?, ?, ?)");
for (int i = 0; i<500; i++){
query.bindValue(0,Name[j]);
query.bindValue(1,age[j]);
query.bindValue(2,data1[j]);
query.bindValue(3,data2[j]);
query.bindValue(4,data3[j]);
query.bindValue(5,data4[j]);
query.bindValue(6,data5[j]);
query.next(); //just trying to go for the next row
}
qDebug() << "Finish" << QSqlDatabase::database().commit();
问题是这只是插入j=500时的数据,我的意思是,这只存储最后一个数据,其他499个数据没有存储。
有人能帮我吗?我试着把查询,准备循环内,但这没有工作。
3条答案
按热度按时间myzjeezk1#
必须使用
exec()
方法而不是next()
:mxg2im7a2#
query.next()通常用于迭代数据读取器的行。您应该使用query.exec()在事务中插入数据。
这是一个很好的教程:https://katecpp.wordpress.com/2015/08/28/sqlite-with-qt/
avwztpqn3#
这正是
QSqlQuery::execBatch
的用途。