Транзакции в Microsoft Access - PullRequest
0 голосов
/ 29 мая 2018

У меня есть база данных (.mdb), и я подключаюсь к ней из своего приложения QT.У меня нет проблем с чтением данных, но когда я сохраняю их, я хочу сделать это через транзакцию, и я не могу, потому что у меня ошибка.Я вставляю, как я открываю соединение и как я запускаю транзакцию:

Соединение:

m_db = QSqlDatabase::addDatabase("QODBC");
QString strPathDDBB="DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=" + QCoreApplication::applicationDirPath() + "/galibo.mdb";
m_db.setDatabaseName(strPathDDBB);
if (!m_db.open()) {
    QMessageBox::critical(0, QObject::tr("Database Error"), m_db.lastError().text());
  }

Транзакция:

bool feature = m_db.driver()->hasFeature(QSqlDriver::Transactions);
if (!m_db.transaction())
{
    error = "An error occurred while creating the transaction in the database\n";
    error += m_db.lastError().text();
    return false;
}

Переменная функции возвращает true итекстовая ошибка: «[Microsoft] [Microsoft Access ODBC Driver] Невозможно определить атрибут сейчас QODBC3: невозможно отключить автокоммит»

Есть идеи?

1 Ответ

0 голосов
/ 30 мая 2018

Я уже выяснил причину ошибки.Транзакция запускается в процессе сохранения приложения.Перед этим процессом проводится серия консультаций в процессе чтения информации.Хорошо, если в каждом запросе ресурсы не освобождаются с помощью метода finish () класса QSqlQuery, то при запуске транзакции закомментированное исключение пропускается.

Спасибо

...