首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Qt 5.2.1 連接 SQL Server 2000 完整實例

     編輯:程式設計綜合問答

環境

  • Windows 平台
  • Qt 5.2.1 (MinGW 或 MSVC)
  • SQL Server 2000
  • 需安裝 ODBC 驅動(SQL Server Native Client 或舊版 SQL Server ODBC Driver)

連接代碼

#include 
#include 
#include 
#include 

bool connectToSqlServer()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    // DSN-less 連接字符串,指定驅動、服務器、數據庫
    QString dsn = QString("DRIVER={SQL Server};SERVER=%1;DATABASE=%2;UID=%3;PWD=%4")
                      .arg("192.168.0.112")
                      .arg("testDBName")
                      .arg("sa")
                      .arg("sa");
    db.setDatabaseName(dsn);

    if (!db.open()) {
        qDebug() << "連接失敗:" << db.lastError().text();
        return false;
    }
    qDebug() << "連接成功";
    return true;
}

查詢示例


void queryExample()
{
    QSqlQuery query;
    QString sql = "SELECT * FROM testTable";
    if (!query.exec(sql)) {
        qDebug() << "查詢失敗:" << query.lastError().text();
        return;
    }

    while (query.next()) {
        QString name = query.value("testName").toString();  // 按列名取值
        qDebug() << "Name:" << name;
    }
}

常見坑點與解決

  1. 驅動名稱:{SQL Server} 對應舊版 ODBC 驅動;若用 SQL Server Native Client 10.0/11.0,驅動名為 {SQL Server Native Client 10.0}。
  2. 32/64 位匹配:Qt 編譯器位數(MinGW 32bit / MSVC 64bit)必須與 ODBC 驅動位數一致,否則 QODBC 找不到驅動。
  3. 防火牆/端口:SQL Server 2000 默認端口 1433,需在服務器防火牆開放,並啟用 TCP/IP 協議(SQL Server 網絡實用工具)。
  4. 字符集:舊版驅動可能返回 GBK 編碼,Qt 內部用 Unicode,若出現亂碼可嘗試 query.setForwardOnly(true) 或手動轉碼。

進階:使用 DSN(系統數據源)

控制面板 → 管理工具 → ODBC 數據源 → 系統 DSN → 添加 → 選擇 SQL Server 驅動 → 配置服務器/數據庫/認證。代碼簡化為:

db.setDatabaseName("MySqlServerDSN");
db.setUserName("sa");
db.setPassword("sa");
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved