[英]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.