簡體   English   中英

在Linux中打開MS Access文件

[英]Open MS Access file in Linux

我正在嘗試在Linux中使用QT打開MS Access數據庫文件。

因此,我已經使用unixODBC安裝了Easysoft MS Access ODBC驅動程序。 有我的odbc.ini文件:

[Easysoft ODBC-ACCESS]
Description = MS Acess db driver
Driver = /usr/local/easysoft/access/lib/libesmdb.so
Setup = /usr/local/easysoft/access/lib/libesmdbS.so

並且有odbcinst.ini文件:

[ACCESS_SAMPLE]
Driver = Easysoft ODBC-ACCESS
mdbfile = /home/user/personal_base.mdb

另外,我已經為qt安裝了odbc插件:

sudo apt-get install libqt4-sql-odbc

現在如何在Linux中使用Qt打開mdb文件?

在MS Windows中,我這樣做的方式是:

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

我嘗試將db.setDataBaseName更改為

...
db.setDatabaseName("Driver={Easysoft ODBC-ACCESS};DSN='ACCESS_SAMPLE'");
...

但是它返回一個錯誤:

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

怎么了?

這是一些代碼,用於構建適當的DSN以便從Mac,Linux和Windows連接到SQL Server。 我認為您的連接字符串在代碼中不正確。 也許它將幫助您入門。

QString SQLServerProvider::buildDSN(QString server, QString database, QString username, QString password)
{
#ifdef Q_WS_MACX
    QString dsn = QString("DRIVER=/usr/local/lib/libtdsodbc.so;SERVER=%1;TDS_VERSION=8pClient;DATABASE=%2;PORT=1433;UID=%3;PWD=%4;").arg(server).arg(database).arg(username).arg(password);
#endif

#ifdef Q_WS_X11
    QString dsn = QString("DRIVER={FreeTDS};SERVER=%1;TDS_VERSION=8.0;PORT=1433;DATABASE=%2;UID=%3;PWD=%4;").arg(server).arg(database).arg(username).arg(password);
#endif

#ifdef Q_WS_WIN
    QString dsn = QString("DRIVER={SQL SERVER};SERVER=%1;DATABASE=%2;UID=%3;PWD=%4;").arg(server).arg(database).arg(username).arg(password);
#endif
    return dsn;
}

我知道您正在嘗試連接到Microsoft Access數據庫,但是也許如果您在Q_WS_X11部分中替換FreeTDS和其他一些paraneter,那將對您有用。 我之前沒有使用過Easysoft ODBC-ACCESS,所以我不確定100%如何為該驅動程序格式化DSN。 如果您還沒有閱讀 ,請閱讀這里 ,因為它介紹了如何使用isql測試ODBC DSN連接。 如果您需要進一步的幫助,請告訴我,我將盡力提供幫助。

嘗試將您的DSN-Less連接更改為:-

Driver=/usr/local/easysoft/access/lib/libesmdb.so;mdbfile=/home/user/personal_base.mdb

添加您的機器庫路徑:

export LD_LIBRARY_PATH=/usr/local/easysoft/lib:/usr/local/easysoft/access/lib:/usr/local/easysoft/unixODBC/lib:$LD_LIBRARY_PATH

最后,發送電子郵件至support@easysoft.com,並要求他們提供最新版本的驅動程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM