原创 二十一、Qt数据库(一)简介(原创)

2010-3-8 20:14 3663 4 5 分类: MCU/ 嵌入式
声明:本文原创于yafeilinux的百度博客,http://hi.baidu.com/yafeilinux 转载请注明出处。

从今天开始我们学习Qt数据库编程的内容。

先说明:我们以后使用现在最新的基于Qt 4.6.2的Qt Creator 1.3.1 Windows版本,该版本是2010年2月17日发布的。

数据库几乎是每个较大的软件所必须应用的,而在Qt中也使用QtSql模块实现了对数据库的完美支持。我们在Qt Creator的帮助中查找QtSql Module,其内容如下图:

可以看到这个模块是一组类的集合,使用这个模块我们需要加入头文件#include <QtSql>,而在工程文件中需要加入一行代码:QT += sql

这里每个类的作用在后面都有简单的介绍,你也可以进入其中查看其详细内容。下面我们先简单的说一下QSqlDatabase类和QSqlQuery类。
QSqlDatabase类实现了数据库连接的操作,现在Qt支持的数据库类型有如下几种:

而现在我们使用的免费的Qt只提供了SQLite和ODBC数据库的驱动(我们可以在Qt Creator安装目录下的qt\plugins\sqldrivers文件夹下查看),而其他数据库的驱动需要我们自己添加。SQLite是一个小巧的嵌入式数据库,关于它的介绍你可以自己在网上查找。
QSqlQuery类用来执行SQL语句。(关于SQL语句:在我的教程中只会出现很简单的SQL语句,你没有相关知识也可以看懂,但是如果想进行深入学习,就需要自己学习相关知识了。)

下面我们就先利用这两个类来实现最简单的数据库程序,其他的类我们会在以后的教程中逐个学习到。
1.新建Qt控制台工程。

2.选择上QtSql模块,这样就会自动往工程文件中添加QT += sql 这行代码了。

3.修改main.cpp中的内容如下。
#include <QtCore/QCoreApplication>
#include <QtSql>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); //添加数据库驱动
    db.setDatabaseName(":memory:"); //数据库连接命名
    if(!db.open()) //打开数据库
    {
        return false;
    }

    QSqlQuery query; //以下执行相关QSL语句
    query.exec("create table student(id int primary key,name varchar)");
    //新建student表,id设置为主键,还有一个name项
    query.exec("insert into student values(1,'xiaogang')");
    query.exec("insert into student values(2,'xiaoming')");
    query.exec("insert into student values(3,'xiaohong')");
   
//向表中插入3条记录
    query.exec("select id,name from student where id >= 2");
    //查找表中id >=2 的记录的id项和name项的值
    while(query.next())       //query.next()指向查找到的第一条记录,然后每次后移一条记录
    {
        int ele0 = query.value(0).toInt();        //query.value(0)是id的值,将其转换为int型
        QString ele1 =query.value(1).toString();
        qDebug() << ele0 <<ele1 ;       //输出两个值
    }
   
    return a.exec();
}
我们使用了SQLite数据库,连接名为“:memory:”表示这是建立在内存中的数据库,也就是说该数据库只在程序运行期间有效。如果需要保存该数据库文件,我们可以将它更改为实际的文件路径。
4.最终效果如下。

5.我们可以将主函数更改如下。
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
   
qDebug() << "Available drivers:";
    QStringList drivers = QSqlDatabase::drivers();
    foreach(QString driver, drivers)
    qDebug() << "\t" << driver;

    return a.exec();
}
这样运行程序就可以显示现在所有能用的数据库驱动了。

可以看到现在可用的数据库驱动只有三个。
PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户294637 2010-7-7 09:53

地方vdf
相关推荐阅读
用户395791 2011-02-21 10:10
单片机实现贪吃蛇游戏
本文章原创于 www.yafeilinux.com  作者:雨?烟?, 转载请注明出处。最近忙完英语考试了,感觉轻松许多。手痒的很,想写点程序,在玩弄手机时看见自己的手机游戏里连个贪吃蛇都没有呢…为什...
用户395791 2011-02-13 16:20
Qt 的未来
2011年的春节刚过,当我们还不愿意从过年的懒散生活中清醒过来时,一则无法设想的新闻将我们惊醒!   一、事件突发: 1.北京时间2月11日下午消息,诺基亚与微软刚刚宣布,双方计划建立广泛的战略伙伴关...
用户395791 2010-07-17 13:37
Qt串口通信专题教程
本文章原创于www.yafeilinux.com 转载请注明出处。Qt串口通信专题教程前言去年我使用Qt编写串口通信程序时,将自己的学习过程写成了教程(Qt编写串口通信程序全程图文讲解),但是由于时间...
用户395791 2010-06-16 22:32
Led非典型应用——感测外部光线
本文章原创于 www.yafeilinux.com  作者:Jay , 转载请注明出处。基本上初学者学习任何一款单片机都会写同样的一个程序——Led流水灯。就像初学C、C++、Qt之类的语言时都要写“...
用户395791 2010-05-27 18:47
Qt Creator系列教程
Qt Creator系列教程        为了使更多的Qt初学者能尽快入门Qt,也为了Qt及Qt Creator的快速普及,我们花费大量精力写出了这一系列教程。虽然教程的知识可能很浅显,虽然教程的语...
用户395791 2010-03-26 17:51
二十七、Qt数据库(七)QSqlRelationalTableModel(原创)
声明:本文原创于yafeilinux的百度博客,http://hi.baidu.com/yafeilinux 转载请注明出处。讲完QSqlTableModel了,我们这次讲这个类的扩展类QSqlRel...
EE直播间
更多
我要评论
1
4
关闭 站长推荐上一条 /3 下一条