Qt 数据库操作(一)

Qt 中的数据库操作比较简单,因为Qt提供了不需要SQL知识就可以浏览和编辑数据库的接口。

Qt中的Qtsql模块提供了对数据库的支持,该模块中的众多类基本可以分为3层:

  • 用户接口层: QSqlQueryModel,QSqlTableModel 和 QSqlRelationalTableModel
  • SQL接口层:QSqlDatabase、QSqlQuery,QSqlError、QSqlField、QSqlIndex
    和QSqlRecord
  • 驱动层: QSqlDriver ,QSqlDriverCreator< T >,QSqlDriverCreatorBase,QSqlDriverPlugin 和 QSqlResult

驱动层为具体的数据库和SQL接口层之间提供了底层的桥梁;

SQL接口层提供了对数据的访问,其中QSqlDatabase类用来创建连接,QSqlQuery类可以使用SQL语句来实现与数据库的交互;

用户接口层的类实现了将数据库链接到窗口部件上,这些类是使用模型、视图框架实现的。

如果要使用QtSql模块中的类,需要在项目文件(.pro)中添加“”“QT+=sql”;

执行如下代码:

    qDebug() << "Available drivers:";
    QStringList drivers = QSqlDatabase::drivers();
    foreach(QString driver, drivers)
        qDebug() << driver;

输出:
Available drivers:
“QSQLITE”
“QODBC”
“QODBC3”
“QPSQL”
“QPSQL7”

可以发现Qt 默认并不支持mysql 的驱动。不过可以手动添加mysql 的驱动文件。这里先不作重点介绍了。

这里我们先就SQLite数据库,它是一款轻型的文件型数据库,主要用在嵌入式领域,支持跨平台。

1、创建数据库链接

QSqlDataBase db = QSqlDataBase :: addDataBase("QSQLITE");//以默认方式,创建连接对象
//初始化数据库信息
db.setHostName("bigblue");    //设置主机名
db.setDatabaseName("fightdb");  //设置数据库名
db.setUserName("myname"); //设置用户名
db.setPassword("lusfasdf"); //设置密码
bool ok = db.open();  //打开数据库

2、SQLite数据库的建立

先创建connection.h 文件,

#ifndef CONNECTION_H
#define CONNECTION_H
#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlQuery>

static bool createConnection()
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName(":memory:");
    if (!db.open()) {
        QMessageBox::critical(0, "Cannot open database",
            "Unable to establish a database connection.", QMessageBox::Cancel);
        return false;
    }
    QSqlQuery query;
    query.exec("create table student (id int primary key, "
               "name varchar(20))");
    query.exec("insert into student values(0, 'LiMing')");
    query.exec("insert into student values(1, 'LiuTao')");
    query.exec("insert into student values(2, 'WangHong')");
    return true;
}

#endif // CONNECTION_H

创建连接并插入数据表项

然后在主函数调用并查询数据库。

#include <QApplication>
#include <QSqlDatabase>
#include <QDebug>
#include <QStringList>
#include "connection.h"
#include <QVariant>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    // 创建数据库连接
    if (!createConnection()) return 1;
    // 使用QSqlQuery查询整张表
    QSqlQuery query;
    query.exec("select * from student");
    while(query.next())
    {
        qDebug() << query.value(0).toInt() << query.value(1).toString();
    }

    return a.exec();
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值