Qt+sqlite3使用事务提升插入效率
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QVariant>
#include <QDebug>
// 假设db是已经设置好并打开的QSqlDatabase实例
// 开始一个事务
QSqlQuery query(db);
query.exec("BEGIN;"); // 或者使用QSqlDatabase的transaction()函数
// 准备插入的数据
QStringList data;
data << "data1" << "data2" << "data3"; // 示例数据
// 构建插入的SQL语句
QString insertSql = "INSERT INTO tableName (columnName) VALUES (:data);";
// 循环插入数据
for (const QString &datum : data) {
query.prepare(insertSql);
query.bindValue(":data", datum);
if (!query.exec()) {
qDebug() << "Error inserting data:" << query.lastError();
// 如果出错,可以选择回滚事务
query.exec("ROLLBACK;");
break;
}
}
// 提交事务
query.exec("COMMIT;");
这段代码展示了如何在Qt中使用SQLite数据库进行事务处理来提高批量插入操作的效率。通过将多个插入操作组织在一个事务内,可以减少数据库I/O操作的次数,从而提高插入效率。同时,使用了QSqlQuery的prepare和bindValue方法来提高代码的可读性和效率,并包含了错误处理逻辑,以防止在事务执行过程中出现问题。
评论已关闭