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

标签 c++ sql-server linux qt

我正在尝试在我的 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][驱动程序管理器]无法打开库“SQL Native Client”:找不到文件 QODBC3:无法连接“

我的问题是:

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

最佳答案

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

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

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

关于c++ - 从 Qt Linux 应用程序连接到 MS SQLServer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32759022/

相关文章:

c++ - 尝试将二维数组作为参数传递时 undefined reference

sql - 将记录的每一列转换为单独的记录

在特定时间运行多个命令的linux脚本

Linux FTP put成功输出

c++ - 如何通过按位运算在 double 之间执行求和

c++ - Luabridge:删除时堆损坏(_CrtIsValidHeapPointer)

c++ - 无符号整数到 IP 地址字符串,无需 itoa/to_string/boost

c# - 在存在触发器的情况下从 linq 到 sql 向 sql server 插入行时出错

sql-server - 无法在 dbo 架构下创建表

linux - tail -f 总是使用 inotify 吗?