qt数据库事务

数据库事务,为了保证一系列操作都进行,或者都不进行,一般用于大批量处理数据,以防程序因为中途崩溃而产生bug。


【举个简单的例子,图书馆借书流程:
1、学生借书,刷条形码以及学生卡;
2、系统显示该书库存少一件;
3、系统记录借书人的id和姓名。】
如果系统进行到第二步完成后突然炸了,那么岂不是该书显示被借走了,库存少了,但却没有借书人的信息。为了避免这种问题,引入数据库事务。


这里做一个简单的qt使用事务的例子,供自己今后查阅。

	QString createTable;
 	QSqlQuery query;

    //判断是否支持事务操作,支持便启动事务
    if(QSqlDatabase::database().driver()->hasFeature(QSqlDriver::Transactions))
    {
        if(QSqlDatabase::database().transaction())
        {
            //在数据库中建立车道、通道、相位、计划、日期、路口图的表
            createTable = QString("create table if not exists lane(data text not null);");
            query.exec(createTable);
            createTable = QString("create table if not exists passway(data text not null);");
            query.exec(createTable);
            createTable = QString("create table if not exists phase(data text not null);");
            query.exec(createTable);
            createTable = QString("create table if not exists plan(data text not null);");
            query.exec(createTable);
            createTable = QString("create table if not exists date(data text not null);");
            query.exec(createTable);
            createTable = QString("create table if not exists crossingPic(data text not null);");
            query.exec(createTable);

            //如果提交事务失败
            if(!QSqlDatabase::database().commit())
            {
                qDebug()<< QSqlDatabase::database().lastError();
                //如果回滚失败
                if(!QSqlDatabase::database().rollback())
                    qDebug()<< QSqlDatabase::database().lastError();
            }
        }
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值