3.4学习(Qt八股)
1、信号与槽connect的第5个参数
一般来说都是不写,系统默认是Qt::AutoConnect,而一般来说分为以下几种:
1、Qt::DirectConnection,用于单线程,信号发出后就会立即响应槽函数 2、Qt::QueuedConnection,用于多线程通信,槽函数会加入到接受者的队列
3、Qt::BlockingQueuedConnection,也是用于多线程,发送者一旦发送信号后,它的线程就会阻塞,直至接受者接受到信号
4、Qt::UniqueConnection,用于多线程,指定信号和槽函数,防止发生重复连接
2、QSqlDatabase的事务使用
transaction()是开始一个事务,经过种种操作后成功就可以提交commit(),如果其中有一个环节出问题了就会回滚事务rollback(),这个回滚会将之前开始事务后的所有操作重置,一个事务要么全部成功,要么全部失败
点击查看代码
QSqlDatabase db=QSqlDatabase::database();//获取数据库
if(db.transaction())//开始一个事务
{
QSqlQuery sql(db);
if(sql.exec("INSERT INTO table_name(column1,column2)VALUES(value1,vlaue2)"))
{
if(sql.exec("UPDATE table_name SET column=value"))
{
if(db.commit())
{
qDebug()<<"提交成功";
}
else
{
qDebug()<<"提交失败";
db.rollback();
}
}
else
{
qDebug()<<"更新失败";
db.rollback();//回滚
}
}
else
{
qDebug()<<"插入失败";
db.rollback();//回滚事务
}
}
else
{
qDebug()<<"开启事务失败";
}
浙公网安备 33010602011771号