Qt資料庫事務操作
阿新 • • 發佈:2019-02-18
連線
QSqlDatabase db;
connection(QString const& connectionName)
{
static InitDB init;
db = QSqlDatabase::addDatabase("QPSQL", connectionName);
db.setHostName(init.hostName);
db.setPort(init.port);
db.setDatabaseName(init.databaseName );
db.setUserName(init.username);
db.setPassword(init.password);
if (!db.open())
{
qCritical() << db.lastError();
}
}
使用
if (db.driver()->hasFeature(QSqlDriver::Transactions))
{
//啟動事務操作
if (db.transaction())
{
QSqlQuery t_db(db);
//組sql語句
QString t_sql;
t_sql = R"( DELETE FROM "tableName" WHERE id = ':id';)";
t_sql.replace("tableName", tableName);
t_sql.replace(":id", Id);
t_db.prepare(t_sql);
t_db .exec();
//提交事務
if (!db.commit())
{
if (!db.rollback())
{
return db.lastError().type();
}
else
{
return 66;
}
}
return 0;
}
}