从Qt Linux应用程序连接到MS SQLServer

Connecting to MS SQLServer from Qt Linux application

本文关键字:MS SQLServer 连接 应用程序 Qt Linux      更新时间:2023-10-16

我正在尝试在我的Qt Linux应用程序中使用QODBC连接到远程盒子上的MS SQL Server。

到目前为止我所做的是:

  1. 在.pro文件中添加QT += SQL

  2. 测试了一些db函数:

    QStringList drivers = QSqlDatabase::drivers();
    qDebug() << "Drivers: " ;
    foreach(QString driver, drivers) {
        qDebug() << ":: " << driver;
    }
    qDebug() << "Connection Names: ";
    QStringList connames = QSqlDatabase::connectionNames();
    foreach(QString conname, connames) {
        qDebug() << ":: " << conname;
    }
    qDebug() << "---";
    

这两个都可以,尽管connectionNames()在此阶段为空。

  • 我已经尝试添加一个数据库:

    QString serverName = "server1";
    QString dbName = "abc123";
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "MyFirst");
    db.setHostName(serverName);
    QString myCon = QString("DRIVER={SQL Native Client};SERVER=%1;DATABASE=%2;Trusted_Connection = Yes").arg(serverName).arg(dbName);
    db.setDatabaseName(myCon);
    
  • 如果我现在列出连接,"MyFirst"在列表中。

  • 试图打开数据库:

    bool ok = db.open();    
    qDebug() << "OK: " << ok;
    if (!ok) {
        qDebug() << "error: " << db.lastError().text();
    }
    
  • db.open()失败,返回以下消息:

    "[unixODBC][Driver Manager] cannot open lib 'SQL Native Client': file not found QODBC3: cannot connect"

    我的问题是:

    我拿起连接字符串从论坛帖子,我认为这是一个很好的地方开始,但究竟应该在那里?"SQL本地客户端"从何而来?我需要做些什么来设置我的Qt/Linux盒子能够连接到远程MS SQL Server?

    听起来你需要安装SQL Server ODBC Driver。

    如何做到这一点的解释在这里:

    • https://technet.microsoft.com/en-us/library/hh568454 (v = sql.110) . aspx

    此外,您需要使用正确的名称来引用它,即"ODBC Driver 11 for SQL Server"