qt mysql 事务处理_QT数据库中的事务处理

博客内容涉及在QT中使用QSqlDatabase进行MySQL事务处理。通过db->transaction()开启事务,然后执行一系列的数据库操作,如创建和删除表以及插入数据。在执行过程中,如果出现错误,例如INSERT语句的语法错误,会使用QSqlError对象检查错误类型。如果sqlError.type()为QSqlError::None,即使存在错误也会提交事务。作者提出了一个问题,当exec()方法在错误发生后清空错误信息时,如何正确回滚事务,并询问QT3中类似Java的try-catch异常处理机制。
摘要由CSDN通过智能技术生成

db->transaction();

QSqlQuery query;

query.exec("DROP TABLE track");

query.exec("DROP TABLE cd");

query.exec("DROP TABLE artist");

query.exec("CREATE TABLE artist ("

"id INTEGER PRIMARY KEY, "

"name VARCHAR(40) NOT NULL, "

"country VARCHAR(40))");

query.exec("CREATE TABLE cd ("

"id INTEGER PRIMARY KEY, "

"artistid INTEGER NOT NULL, "

"title VARCHAR(40) NOT NULL, "

"year INTEGER NOT NULL)");

query.exec("CREATE TABLE track ("

"id INTEGER PRIMARY KEY, "

"cdid INTEGER NOT NULL, "

"numberr INTEGER NOT NULL, "

"title VARCHAR(40) NOT NULL, "

"duration INTEGER NOT NULL)");

query.exec("INSERT INTO  artist "

"VALUES (1001, 'Gluecifer', 'Norway')");

query.exec("INSERT INTO cd "

"VALUES (2001, 1000, 'Riding the Tiger', 1997)");

query.exec("INSERT INTO track "

"VALUES (3001, 2004, 01, 'Boris', 514)");

QSqlError sqlError = query.lastError();

if(sqlError.type()  == QSqlError::None)

{

db->commit();

}

else

{

db->rollback();

}

请问:假如我前面的Insert语句出现了语法错误,比如:query.exec("INSERT INTO cd "

"VALUES (2001, 1000, 'Riding the Tiger', 1997)");但是sqlError.type()  == QSqlError::None是成立的,因为exec()执行时清空了错误信息,这样判断不能正确回滚,请问,QT3里面怎么处理这种情况的?异常机制是什么呢?在Java里面可以try catch,在QT里面怎么处理呢?谢谢!

[ 此贴被XChinux在2008-07-18 09:30重新编辑 ]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值