Qt連接數據庫的方式很多,這里說明一種最常用也是最實用的方式,因為這種方式在Windows上開發程序使用起來非常方便,並且也是遠程連接數據庫所需要用到的方式。
前提工作:
在Win7下安裝了SQL Server 2008,並在SQL Server中創建了數據庫MyDB。
Qt通過ODBC連接SQL Server 2008概述:
Qt通過ODBC連接數據庫時,使用的數據庫名不是直接寫入數據庫名稱,而是DSN名。
關於DSN的簡要介紹:
原名:Data Source Name
中文名:數據源名稱
DSN為ODBC定義了一個確定的數據庫和必須用到的ODBC驅動程序。每個ODBC驅動程序定義為該驅動程序支持的一個數據庫創建DSN需要的信息。就是說安裝ODBC驅動程序以及創建一個數據庫之后,必須創建一個DSN。
DSN名的使用方式有兩種:
1、在操作系統中配置DSN;
2、在Qt程序代碼中采用DSN連接字符串直接連接ODBC數據庫。
下面詳細介紹在操作系統中配置DSN方式下連接SQL Server 2008的操作過程
在操作系統中配置DSN
1、在Win7系統中配置DSN詳細圖解
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;}elseqDebug()<<"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/
如果出現錯誤,請確認如下配置正確:
1、
建議將SQL Server(MYSQLSERVER)、SQL Server(SQLEXPRESS)服務停止,避免沖突。
2、
注意:更改配置后,務必重新啟動數據庫服務器