无法执行事务Qt PostgreSQL

时间:2014-10-25 08:29:20

标签: c++ database qt postgresql transactions

我正在尝试创建简单的应用来沟通和控制我的数据库。我正在使用PostgreSQL DBMS。我已经为Linux安装了所有必需的驱动程序。 我像这样打开了与数据库的连接

db = QSqlDatabase::addDatabase("QPSQL");
db.setDatabaseName(dbName);
db.setHostName(host);
db.setUserName(usr);
db.setPassword(pwd);
if (!db.open())
{
    return false;
}

一切似乎都运行良好,我可以执行exec sql查询和其他东西。但我的交易有问题。我第一次打开事务调用事务方法,但没有检查它的返回值,因为它没有像我预期的那样工作,因为像commit和rollback这样的方法不起作用。所以在我的情况下,事务方法总是返回false 还有一个奇怪的事情,如果我尝试从db对象获取最后一个错误,我会得到"Driver not loaded Driver not loaded",但是它仍然适用于简单的查询。

   QSqlQuery query;
        QSqlDriver *driver = QSqlDatabase::database().driver();
        if (driver->hasFeature(QSqlDriver::Transactions)) {
       if(db.transaction()) {

在此示例中,它为hasFeature返回 true ,但我在db.transaction中收到 false

注意:我使用的是Linux(Mint x64)。

0 个答案:

没有答案