1. 程式人生 > >Qt資料庫事務操作

Qt資料庫事務操作

連線

    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; } }