QT 使用数据库事务处理
说明
数据太少时,使用事务不会起作用,请注意。
第一步 .pro文件 引入sql
第二步 引入头文件
#include <QTableView>
#include <QHeaderView>
#include <QStandardItemModel>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QDebug>
#include <QSqlRecord>
#include <QFile>
#include <QSqlDriver>
第三步 开启事务加速,进行增删改操作【增加操作演示】
//建立并打开数据库
QSqlDatabase database;
database = QSqlDatabase::addDatabase("QSQLITE");
qDebug()<<QApplication::applicationDirPath();
database.setDatabaseName(QApplication::applicationDirPath() + "/CONFIG/" + "testApple.db");
if (!database.open())
{
qDebug() << "Error: Failed to connect database." << database.lastError();
}
else
{
qDebug() << "Succeed to connect database." ;
}
//是否支持事务
qDebug() <<"this DB hasFeature:Transaction:" <<database.driver()->hasFeature(QSqlDriver::Transactions);
//开启事务
bool transaction_begin;
transaction_begin= database.transaction();
//打印事务开启结果 bool
qDebug() << " transaction_begin : "<<transaction_begin ;
//创建表格
QSqlQuery sql_query;
//先清空一下表,可按需添加此句
sql_query.exec("DROP TABLE student");
//创建表格student
if(!sql_query.exec("create table student(UserId int primary key, UserName text, PassWord text)"))
{
qDebug() << "Error: Fail to create table."<< sql_query.lastError();
}
else
{
qDebug() << "Table created!";
}
// 批量测试填充表
for(int i=0; i<100; i++)
{
if(!sql_query.exec(QString("INSERT INTO student VALUES(%1, 'Flywave', '100')").arg(i)))
{
qDebug() << "Error: Fail to create table."<< sql_query.lastError();
}
else
{
qDebug() << QString("OK: Success %1!").arg(i);
}
}
database.close();