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;
    }
    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、

建议将SQL Server(MYSQLSERVER)、SQL Server(SQLEXPRESS)服务停止,避免冲突。

2、

注意:更改配置后,务必重新启动数据库服务器

更多相关文章

  1. 自己写了一个简单的mysql数据库连接类
  2. Python爬虫数据存储MySQL【1】连接方式
  3. 如何用sql语言只获得数据库当前日期,且格式为"yyyy-mm-dd"?
  4. python数据存储系列教程——python中mysql数据库操作:连接、增删
  5. 优惠券使用限制的数据库设计
  6. mysql数据库的主从同步过程详述
  7. mysql 数据库备份和还原 实践
  8. 工作日记(连接SQL Sever 2005服务器数据库)
  9. docker应用-6(mysql+mycat 搭建数据库集群)

随机推荐

  1. [APK破解]牛牛粤语学习机v1.6.4,积分1000,
  2. Android下的USB Host介绍和开发
  3. android中的坐标系以及获取坐标的方法
  4. 使用Android内部的DownloadProvider下载
  5. Android横向滑动加载更多的控件的实现---
  6. Android彻底组件化demo发布
  7. Android 关于android:name属性问题
  8. android之实现注册功能
  9. 谷歌正式发布Android 2.2手机操作平台
  10. Android跨进程通信方式(IPC)解析