我可以用下面的代碼連接到一個老Access
數據庫:檢測Microsoft Access驅動程序安裝
bool LoadDb(const QString& file_path, QSqlDatabase& db_out, QSqlError& err)
{
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
static const auto DRIVER_NAME = R"({Microsoft Access Driver (*.mdb, *.accdb)})";
const auto connection_string = QString(R"(Driver=%1;DSN='';DBQ=%2)").arg(DRIVER_NAME, file_path);
db.setDatabaseName(connection_string);
if (!db.open())
{
err = db.lastError();
return false;
}
db_out = std::move(db);
return true;
}
但我想以前測試的驅動程序(「Microsoft Access數據庫引擎」)是這樣我才能向用戶顯示一條有意義的消息。
下面的連接字符串不起作用:
const auto connection_string = QString(R"(Driver=%1)").arg(DRIVER_NAME);
錯誤意味着什麼?它是在法國:
[Microsoft][Pilote ODBC Microsoft Access]Erreur générale Impossible d'ouvrir la clé de Registre « Temporary (volatile) Ace DSN for process 0xa74 Thread 0xce4 DBC 0xb5518368 Jet ». QODBC3: Unable to connect
任何想法?優選便攜式代碼。
相關:https://stackoverflow.com/questions/4051147/odbc-driver-use-in-qt – Liviu