我正在尝试创建简单的应用来沟通和控制我的数据库。我正在使用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)。