【问题标题】:Connecting to MS SQLServer from Qt Linux application从 Qt Linux 应用程序连接到 MS SQLServer
【发布时间】:2015-09-24 10:27:42
【问题描述】:

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

这是我到目前为止所做的:

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

  2. 测试了一些数据库功能:

    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() 在这个阶段是空的。

  1. 我已尝试添加数据库:

    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”就在列表中。

  1. 试图打开数据库:

    bool ok = db.open();    
    qDebug() << "OK: " << ok;
    
    if (!ok) {
        qDebug() << "error: " << db.lastError().text();
    }
    

db.open() 失败并显示以下消息:

“[unixODBC][Driver Manager]无法打开 lib 'SQL Native Client':找不到文件 QODBC3:无法连接”

我的问题是:

我从一个论坛帖子中找到了连接字符串,我认为这是一个很好的起点,但那里到底应该是什么? “SQL Native Client”从何而来?我需要做些什么来设置我的 Qt / Linux 机器才能连接到远程 MS SQL Server?

【问题讨论】:

  • 从 Qt 安装的源目录编译 qodbc 并查看此页面以获取连接字符串:wiki.qt.io/ODBC

标签: c++ sql-server linux qt


【解决方案1】:

听起来您需要安装 SQL Server ODBC 驱动程序。

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

另外你需要用正确的名字来引用它,即“ODBC Driver 11 for SQL Server”

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-05-09
  • 1970-01-01
  • 1970-01-01
  • 2014-04-13
  • 1970-01-01
  • 2012-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多