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重新编辑 ]