Qt数据库:(一)简介

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



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

这里每个类的作用在后面都有简单的介绍,你也可以进入其中查看其详细内容。下面我们先简单的说一下QSqlDatabase类和QSqlQuery类。

QSqlDatabase类实现了数据库连接的操作,现在Qt支持的数据库类型有如下几种:


而现在我们使用的免费的Qt只提供了SQLite和ODBC数据库的驱动(我们可以在Qt 4.5安装目录下的qt/plugins/sqldrivers文件夹下查看),而其他数据库的驱动需要我们自己添加。SQLite是一个小巧的嵌入式数据库,关于它的介绍你可以自己在网上查找

QSqlQuery类用来执行SQL语句。(关于SQL语句:在我的教程中只会出现很简单的SQL语句,你没有相关知识也可以看懂,但是如果想进行深入学习,就需要自己学习相关知识了。)

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

1.新建Qt控制台工程。

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



3.修改main.cpp中的内容如下。

#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QtSql>
#include <QtDebug>
#include <qdebug.h>
#include <QSqlQuery>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");//添加数据库驱动
    db.setDatabaseName(":memory:"); //数据库连接命名
    if(!db.open()) //打开数据库
    {
        qDebug("open is false");
        return false;
    }
    else
    {
        qDebug("open is OK");
    }
 
    QSqlQuery query(db); //以下执行相关QSL语句
    bool buscess=query.exec("create table person (id int primary key, firstname varchar(20), lastname varchar(20))");
    //新建person表,id设置为主键,一个firstname项,还有一个lastname项
    query.exec("insert into person values(101, 'Danny', 'Young')");
    query.exec("insert into person values(102, 'Christine', 'Holand')");
    query.exec("insert into person values(103, 'Lars', 'Gordon')");
    query.exec("insert into person values(104, 'Roberto', 'Robitaille')");
    query.exec("insert into person values(105, 'Maria', 'Papadopoulos')");
        //向表中插入5条记录
    if(!buscess)
    {
        qDebug("table is error");
    }
    else
    {
        qDebug("table is sucess");
    }
 
    query.exec("select * from person");
    while (query.next())
    {
        qDebug()<<"*************************";
        int ele0 = query.value(0).toInt();        //query.value(0)是id的值,将其转换为int型
        QString ele1 =query.value(1).toString();
        QString ele2 =query.value(2).toString();
        qDebug() << ele0 <<ele1 <<ele2;       //输出3个值
        qDebug()<<"*************************";
    }

    return a.exec();
}

我们使用了SQLite数据库,连接名为“:memory:”表示这是建立在内存中的数据库,也就是说该数据库只在程序运行期间有效。如果需要保存该数据库文件,我们可以将它更改为实际的文件路径。

4.最终效果如下。



5.我们可以将主函数更改如下。

#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QtSql>
#include <QtDebug>
#include <qdebug.h>
#include <QSqlQuery>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    
    qDebug() << "Available drivers:";
    QStringList drivers = QSqlDatabase::drivers();
    foreach(QString driver, drivers)
    qDebug() << "/t" << driver;

    return a.exec();
}
 

这样运行程序就可以显示现在所有能用的数据库驱动了。



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

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值