mcosta
6th April 2009, 16:57
Hi all,
I've noticed that QSqlDatabase::transaction() and QSqlDriver::beginTransaction() don't work when using QSQLITE driver.
Using QSqlQuery::exec("BEGIN TRANSACTION") work correctly.
It's a bug?
PS. both QSqlDatabase::transaction() and QSqlDriver::beginTransaction() return true for correct execution
Example code
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.transaction(); // returns true
for (int i = 0; i < 1000; ++i)
{
// INSERT data
}
db.commit(); // returns true
doesn't work
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
QSqlQuery q(db);
q.exec("BEGIN TRANSACTION");
for (int i = 0; i < 1000; ++i)
{
// INSERT data
}
q.exec("COMMIT");
works correctly.
I've noticed that QSqlDatabase::transaction() and QSqlDriver::beginTransaction() don't work when using QSQLITE driver.
Using QSqlQuery::exec("BEGIN TRANSACTION") work correctly.
It's a bug?
PS. both QSqlDatabase::transaction() and QSqlDriver::beginTransaction() return true for correct execution
Example code
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.transaction(); // returns true
for (int i = 0; i < 1000; ++i)
{
// INSERT data
}
db.commit(); // returns true
doesn't work
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
QSqlQuery q(db);
q.exec("BEGIN TRANSACTION");
for (int i = 0; i < 1000; ++i)
{
// INSERT data
}
q.exec("COMMIT");
works correctly.