从Qt Linux应用程序

时间:2015-09-24 10:27:42

标签: 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() << "---";
    
  3. 这两个都有效,但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);
      
    2. 如果我现在列出连接,&#34; MyFirst&#34;在列表中。

      1. 试图打开数据库:

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

        &#34; [unixODBC] [Driver Manager]无法打开lib&#39; SQL Native Client&#39; :找不到文件QODBC3:无法连接&#34;

        我的问题是:

        我从一个论坛帖子里拿起了连接字符串,我认为这是一个很好的起点,但是到底应该是什么? &#34; SQL NAtive Client&#34;来自?设置我的Qt / Linux盒能够连接到远程MS SQL Server需要做什么?

1 个答案:

答案 0 :(得分:3)

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

有关如何执行此操作的说明,请访问:

此外,您需要使用正确的名称来引用它,即“SQL Server的ODBC驱动程序11”