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详细图解

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、

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

Qt通过ODBC连接SQL Server2008实践总结的更多相关文章

  1. cenos6.5 64位下PHP远程连接sql server2008成功案例

    准备工作: 1.sql server2008服务器(开放远程端口,默认为1433,我用的是192.168.1.129) 2.安装好php的centos服务器 步骤: 1.php安装mssql扩展.ce ...

  2. php5.2 连接 SQL Server2008

    如果你见到下面这一段输出的话,那么你有福了!!!! Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => ...

  3. Java连接Sql Server2008

    参考:http://weistar.iteye.com/blog/1744871 准备工作: 1.下载JDBC驱动包:http://www.microsoft.com/zh-cn/download/d ...

  4. java 连接sql server2008配置

    Java 应用程序连接SQL Server2008 (Eclipse+JDK7.0+jdbc4.0.jar+Sql Server2008) 假设应用端的连接语句为: String url = &quo ...

  5. linux centos6.4 php连接sql server2008

    1.安装SQL Server驱动freetds yum search freetds yum install freetds php-mssql 或者下载编译安装   2.修改/etc/freetds ...

  6. Unity3D(C#)连接SQL Server2008

    首先部署安装sql server2008,添加Sql Manager. Unity3D连接需要在Unity2017\Editor\Data\Mono\lib\mono\unity文件下找到4个头文件l ...

  7. Apache Doris 通过ODBC连接SQL Server

    社区有小伙伴有使用Doris ODBC外表连接SQL Server数据库,使用中遇到不知道驱动怎么安装,苦于我这边也没有SQL Server的环境,正好社区有用户使用了这个数据库,也安装ODBC驱动测 ...

  8. WAS6.1连接SQL Server2008数据库连接池配置

    原文链接:http://www.cnblogs.com/lyr2012/archive/2012/06/13/2547804.html 说明:该步骤只适用与websphere 6.1.0.15之前的版 ...

  9. linux odbc连接sql server2014

    首先坑爹呀!由于配置Zabbix 用到这个,网上资料一顿搜,一顿报错,调各种参数,依然无法连接,我竟无言以对: 这个只是项目的一小部分,只提供成功案例,没做深入研究,可以让遇到的兄弟少走弯路: 建议第 ...

随机推荐

  1. 【Elasticsearch】ES中时间查询报错:Caused by: ElasticsearchParseException[failed to parse date field [Sun Dec 31 16:00:00 UTC 2017] with format [yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis]];

    ES中时间查询报错:Caused by: ElasticsearchParseException[failed to parse date field [Sun Dec 31 16:00:00 UTC ...

  2. Oracle的tnsnames.ora 监听配置文件详解

    监听配置文件 为了使得外部进程 如 CAMS后台程序 能够访问 Oracle 数据库 必须配 置 Oracle 网络服务器环境 配置 Oracle 网络服务器环境是通过配置 listener.ora ...

  3. python 批量重命名

    import osll=os.listdir(".")c=0for f in ll: c=c+1 os.rename(f,str(c)+".jpg")

  4. InnoDB Record, Gap, and Next-Key Locks

    InnoDB has several types of record-level locks including record locks, gap locks, and next-key locks ...

  5. BZOJ1337: 最小圆覆盖

    题目:求n个点的最小圆覆盖. 题解:最小圆覆盖,上模板.复杂度证明可以戳:这里 代码: #include<cstdio> #include<cstdlib> #include& ...

  6. @Tomcat中的几种log

    日志是程序员居家旅行必备,哦不对,是定位问题,修复bug,甚至是验证应用是否正常的必备利器.甚至很多时候,我们做一次部署仅仅是为了加一行log.虽然现在有各种各样的问题诊断工具,但是在定位线上问题时, ...

  7. RxJava RxLifecycle 生命周期 内存泄漏 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  8. Spring Boot Maven Plugin打包异常及三种解决方法:Unable to find main class

    [背景]spring-boot项目,打包成可执行jar,项目内有两个带有main方法的类并且都使用了@SpringBootApplication注解(或者另一种情形:你有两个main方法并且所在类都没 ...

  9. Vue背景图打包之后访问路径错误

    问题背景:项目里面有用到背景图片,开发模式下正常,打包之后发现报404错误.查看发现是背景图片引用路径出错. 解决方法: .map { width: %; height: 397px; backgro ...

  10. Python Numpy模块函数np.c_和np.r_

    np.r_:是按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等,类似于pandas中的concat(). np.c_:是按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等,类似于pandas中的 ...