Qt通過ODBC連接SQL Server2008實踐總結


Qt連接數據庫的方式很多,這里說明一種最常用也是最實用的方式,因為這種方式在Windows上開發程序使用起來非常方便,並且也是遠程連接數據庫所需要用到的方式。

 

前提工作:

在Win7下安裝了SQL Server 2008,並在SQL Server中創建了數據庫MyDB。

 

Qt通過ODBC連接SQL Server 2008概述:

Qt通過ODBC連接數據庫時,使用的數據庫名不是直接寫入數據庫名稱,而是DSN名。

 

關於DSN的簡要介紹:

原名:Data Source Name
  中文名:數據源名稱
DSNODBC定義了一個確定的數據庫和必須用到的ODBC驅動程序。每個ODBC驅動程序定義為該驅動程序支持的一個數據庫創建DSN需要的信息。就是說安裝ODBC驅動程序以及創建一個數據庫之后,必須創建一個DSN。

 

DSN名的使用方式有兩種:

1、在操作系統中配置DSN;

2、在Qt程序代碼中采用DSN連接字符串直接連接ODBC數據庫。

 

下面詳細介紹在操作系統中配置DSN方式下連接SQL Server 2008的操作過程

 

在操作系統中配置DSN

1、在Win7系統中配置DSN詳細圖解

image

image

image

image

image

image

image

image

image

2、配置好DSN后就可以在Qt程序中使用此DSN連接數據庫了:

其中main.cpp代碼如下:

#include <QtGui/QApplication>

#include "dialog.h"
#include <QSqlDatabase>
#include <QStringList>
#include <QDebug>
#include <QMessageBox>
#include <QtSql>
#include <QSqlQuery>
 
         
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Dialog w;
    w.show();
 
         
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    qDebug()<<"ODBC driver?"<<db.isValid();
    QString dsn = QString::fromLocal8Bit("QTDSN");
    db.setHostName("127.0.0.1");
    db.setDatabaseName(dsn);
    db.setUserName("sa");
    db.setPassword("198811200");
    if(!db.open())
    {
        qDebug()<<db.lastError().text();
        QMessageBox::critical(0, QObject::tr("Database error"), db.lastError().text());
        return false;
    }
    else
        qDebug()<<"database open success!";
 
         
    QSqlQuery query(db);
    query.exec("select * from student");
 
         
    while(query.next())
    {
        //qDebug()<<query.value(0).toString();
        qDebug()<<query.value(1).toString();
        //qDebug()<<query.value(2).toString();
        //qDebug()<<query.value(3).toString();
        //qDebug()<<" ";
 
         
    }
 
         
    return a.exec();
}
 
        

測試輸出結果:

ODBC driver? true

database open success!

"李四 "

"王五 "

"趙六 "

"吳莉莉 "

"劉曉紅 "

"陳麗芬 "

"正如因 "

"zhu "

 

 

參考:

http://www.xuebuyuan.com/619048.html

http://hi.baidu.com/hzau_edu/item/091aa61a12b4e98488a956a5

http://blog.163.com/luminary_fan/blog/static/1941080892013069100349/

http://wenku.baidu.com/link?url=8752chxOKRLOJ4yXwZGlwRUbWhvkNDwVioZd0ZwGMGizQDclNsvtnb8137LGXtce_vqNPY1miJAk9H7ZcyOEVYL1LdFOCY8YpMxx83VsKEK

 

 

如果出現錯誤,請確認如下配置正確:

1、

image

建議將SQL Server(MYSQLSERVER)、SQL Server(SQLEXPRESS)服務停止,避免沖突。

2、

image

 

注意:更改配置后,務必重新啟動數據庫服務器

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM