在做借书系统的时候,用到了事务操作,不会使用qt中事务操作怎么写,查了一些博客帖子,并不起作用,后来发现,在进行事务成功判断时,出现问题,正确代码如下

 if(QSqlDatabase::database().transaction()){
bool res1,res2;
query.prepare("update booklist set borrowNum=?,restNum=? where bookId=?");
query.bindValue(,++borrownum);
query.bindValue(,--restnum);
query.bindValue(,bookId);
res1=query.exec();
//qDebug()<<"insert "<<res1; query.prepare("insert into recordlist(bookId,bookName,borrowPeople,borrowTime,backTime,\
backState) values(?,?,?,?,?,?)");
query.bindValue(,bookId);
query.bindValue(,bookName);
query.bindValue(,userName);
query.bindValue(,borrowTime);
query.bindValue(,"");
query.bindValue(,);
res2=query.exec();
//qDebug()<<query.lastError(); //qDebug()<<"insert "<<res2;
if(res1&&res2){
if(!QSqlDatabase::database().commit()){
QMessageBox::critical(this,"Error","操作失败,将要回滚");
if(!QSqlDatabase::database().rollback()){
QMessageBox::critical(this,"Error","回滚失败");
}
}else{
doShowBackResult();
//qDebug()<<"show ";
}
}else{
qDebug()<<query.lastError();
QMessageBox::critical(this,"Error","操作失败,将要回滚");
if(!QSqlDatabase::database().rollback()){
QMessageBox::critical(this,"Error","回滚失败");
qDebug()<<QSqlDatabase::database().lastError();
}
} }

最新文章

  1. chattr和lsattr
  2. HDU-1466 计算直线的交点数 经典dp
  3. javascript平时小例子③(setInterval使用1)
  4. 如何使用AutoIT完成单机测试
  5. 图解javascript中this指向
  6. asp.net后台编写 loading效果
  7. Linux makefile教程之总述二[转]
  8. javascript笔记——cookie解析
  9. [转载]Unity3D 访问Access数据库
  10. translate函数使用
  11. Struts2内部执行过程
  12. spring-boot 多线程
  13. 逆袭之旅DAY14.东软实训.Oracle.多表连接、分组函数、子查询
  14. 过滤器中获取form表单或url请求数据
  15. 012_iTerm2 快捷键大全
  16. R读取excel文件
  17. DSSM(DEEP STRUCTURED SEMANTIC MODELS)
  18. CAD和GIS绘制图形分析
  19. 探寻C++最快的读取文件的方案 ——C++ IO优化
  20. C#调用Oracle存储过程

热门文章

  1. OpenGL位图变形问题
  2. IOS Modal(切换另外控件器方式)
  3. Aizu 2301 Sleeping Time(概率,剪枝)
  4. Memory Usage Performance Guidelines
  5. python __getattr__ __setattr__
  6. 设置RichTextBox控件的文本的对齐方式
  7. AngularJs学习笔记-组件生命周期
  8. Bootstrap 警告框(Alert)插件
  9. UITableView 优化总结
  10. Xcode Warning: “no rule to process file