我正在使用Ubuntu 13.10上的Qt-5.0.2。我已经构建了QODBC插件但无法访问数据库服务器。这是我的代码
#include <QCoreApplication>
#include <QtSql>
#include <QtDebug>
#include <QSqlError>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setConnectOptions();
QString dsn = QString("DRIVER={PATH};SERVER=win-l54oh3ekuur;DATABASE=LALCPlanner;UID=webdev;PWD=password;");
db.setDatabaseName(dsn);
if(db.open())
{
qDebug() << "Opened";
QSqlQuery qry;
if(qry.exec("select * from [TestStatus]"))
{
while(qry.next())
{
qDebug() << qry.value(0).toString();
qDebug() << qry.value(1).toString();
}
}
else
qDebug() << "ERROR =" << db.lastError().text();
qDebug() << "Closing!";
db.close();
}
else
{
qDebug() << "ERROR =" << db.lastError().text();
}
return a.exec();
}
这里{PATH}是我在.bashrc文件中导出的路径&#34; / usr / lib / i386-linux-gnu / qt5 / plugins / sqldrivers&#34;
当我运行项目时,错误是:
ERROR = "[unixODBC][Driver Manager]Data source name not found, and no default driver specified QODBC3: Unable to connect"
顺便说一句,代码适用于Windows。
答案 0 :(得分:1)
代码可能适用于Windows,因为你实际上有一个名为DRIVER = {}的驱动程序。您不能只在DRIVER中传递目录,它必须是odbcinst.ini文件中定义的驱动程序的名称或驱动程序共享对象的完整路径。
你没有提到你在Ubuntu机器上安装了什么ODBC驱动程序,但我只知道Ubuntu的2个驱动程序可以读取MS Access文件,这些是Easysoft one和MDB工具(并且有负载)这一问题)。这些都不会支持在远程计算机上神奇地打开MS Access DB(由SERVER = xxx暗示),尽管Easysoft将从共享中读取MDB(共享可以是任何一种方式)。