无法连接到MS SQL DB服务器

时间:2014-06-19 05:33:32

标签: linux qt ubuntu odbc

我正在使用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。

1 个答案:

答案 0 :(得分:1)

代码可能适用于Windows,因为你实际上有一个名为DRIVER = {}的驱动程序。您不能只在DRIVER中传递目录,它必须是odbcinst.ini文件中定义的驱动程序的名称或驱动程序共享对象的完整路径。

你没有提到你在Ubuntu机器上安装了什么ODBC驱动程序,但我只知道Ubuntu的2个驱动程序可以读取MS Access文件,这些是Easysoft one和MDB工具(并且有负载)这一问题)。这些都不会支持在远程计算机上神奇地打开MS Access DB(由SERVER = xxx暗示),尽管Easysoft将从共享中读取MDB(共享可以是任何一种方式)。