I want read a sql-script and rollback if a sql-statement fails. I'm not sure how can i do that right. That's my code:
db.transaction();
bool sql_ok=TRUE;
QFile file(:/script.
sql);
for (int i=0; i<sql.count(); i++)
{
sql_ok=q.exec(sql[i]);
if (!sql_ok)
{
QMessageBox::critical(0,
"Error", q.
lastError().
text());
db.rollback();
break;
}
}
q.clear();
if(sql_ok)
{
if(!db.commit()){
QMessageBox::critical(0,
"Error", db.
lastError().
text());
db.rollback();
}
}
QSqlDatabase db = QSqlDatabase::database();
db.transaction();
bool sql_ok=TRUE;
QSqlQuery q;
QFile file(:/script.sql);
QString script=file.readAll();
QStringList sql=script.split(";", QString::SkipEmptyParts);
for (int i=0; i<sql.count(); i++)
{
sql_ok=q.exec(sql[i]);
if (!sql_ok)
{
QMessageBox::critical(0, "Error", q.lastError().text());
db.rollback();
break;
}
}
q.clear();
if(sql_ok)
{
if(!db.commit()){
QMessageBox::critical(0, "Error", db.lastError().text());
db.rollback();
}
}
To copy to clipboard, switch view to plain text mode
Please help me and give me a example how that works right. Thanks in advance.
Bookmarks