2

LinuxでQTを使用してMS Access dbファイルを開こうとしています。したがって、qt 用の odbc プラグインをインストールしました。

sudo apt-get install libqt4-sql-odbc

現在、libqodbc.so と libqsqlite.soqt4/plugins/sqldriversの 2 つのファイルディレクトリがあります。

そのため、プロジェクトで ODBC プラグインを使用しようとしています。接続機能があります:

bool createConnection()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setDatabaseName("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DSN='';DBQ=/home/user/personal_base.mdb");
    if (!db.open()) {
        QMessageBox::warning(0, QObject::tr("Database Error"), db.lastError().text());
        return false;
    }
    return true;
}

しかし、アプリケーションはエラーを表示します:

[unixODBC][Driver Manager]Data source name not found, and no default driver specified QODBC3: Unale to connect 

どうすれば直せますか?

4

2 に答える 2

1

setDatabaseName の呼び出しは、ODBC 関数 SQLDriverConnect で終了します。SQLDriverConnect は、使用している ODBC ドライバーとその使用方法 (DRIVER など) を宣言するために設定できる多数の属性を定義します。unixODBC ドライバー マネージャーにドライバー "Microsoft Access Driver (*.mdb, *.accdb)" をロードするように指示しましたが、そのドライバーが見つかりませんでした。

unixODBC では、ドライバーは通常、コマンド「odbcinst -j」で見つけることができる odbcinst.ini ファイルで定義されます。この記事は役に立ちます。

これは通常、Windows でのみ使用可能な MS Access ドライバーの名前であるため、表示されているように名前が付けられた Microsoft Access ドライバーを持っている可能性はほとんどありません。

私の知る限り、ODBC を使用して Linux から直接 MS Access DB にアクセスする方法は 2 つしかありませ

于 2013-03-18T09:27:47.063 に答える
0

Windowsを使用していることを除いて、プロジェクトで同じ問題が発生しました。これが役立つと思います: ドライバーをこのコードに変更するだけです (QT ウェブサイトから取得):

db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=myaccessfile.mdb");
于 2015-01-28T14:06:24.463 に答える