Qt-数据库操作SQLite

栏目: IT技术 · 发布时间: 5年前

内容简介:参考视频:说明:本文对在Qt中操作SQLite做简要说明。SQLite:SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。具体的操作命令可参考:

1  简介

参考视频: https://www.bilibili.com/video/BV1XW411x7NU?p=88

说明:本文对在Qt中操作 SQLite 做简要说明。

SQLite:SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。具体的操作命令可参考: https://www.runoob.com/sqlite/sqlite-tutorial.html

在Qt中操作SQLite不需要我们单独先安装它,可以直接使用。

2  测试及说明

语法就不介绍了,这里说明功能:创建一个info.db数据库,插入一些数据,然后遍历输出。

代码步骤说明:

(1)添加sqlite数据库

1 db = QSqlDatabase::addDatabase("QSQLITE");

(2)创建数据库

语法和之前操作 MySql 一样:

1 QSqlQuery query;
2     query.exec("create table student(id int primary key, name varchar(255), age int, score int);");

(3)批量插入条目

 1     //批量插入:odbc风格
 2     //预处理语句
 3     query.prepare("insert into student(name, age, score) values(?, ?, ?);");
 4     // 给字段设置内容
 5     QVariantList nameList;
 6     nameList << "xiaoming" << "xiaokong" << "xiaojiang";
 7     QVariantList ageList;
 8     ageList << 22 << 21 << 24;
 9     QVariantList scoreList;
10     scoreList << 89 << 99 << 78;
11     //给字段绑定相应的值,必须按顺序绑定
12     query.addBindValue(nameList);
13     query.addBindValue(ageList);
14     query.addBindValue(scoreList);
15     //执行预处理命令
16     query.execBatch();

(4)遍历输出

1     query.exec("select * from student");
2     while (true == query.next()) {  //一行一行遍历
3         //取出当前行的内容,以列为单位
4         qDebug() << query.value(0).toInt()  //取第一列
5                  << query.value(1).toString() //取第二列
6                  << query.value("age").toInt()
7                  << query.value("score").toInt();
8     }

完整代码:


 1 #include "widget.h"
 2 #include "ui_widget.h"
 3 #include <QDebug>
 4 #include <QSqlDatabase>
 5 #include <QMessageBox>
 6 #include <QSqlError>
 7 #include <QSqlQuery>
 8 
 9 
10 Widget::Widget(QWidget *parent) :
11     QWidget(parent),
12     ui(new Ui::Widget)
13 {
14     ui->setupUi(this);
15 
16     //打印qt支持的数据库驱动
17     qDebug() << QSqlDatabase::drivers();
18 
19     //添加sqlite数据库
20     db = QSqlDatabase::addDatabase("QSQLITE");
21     //设置数据库
22     db.setDatabaseName("../info.db");
23     //打开数据库
24     if (db.open() == false) {
25         QMessageBox::warning(this, "错误", db.lastError().text());
26         return;
27     }
28     //操作sql语句
29     QSqlQuery query;
30     query.exec("create table student(id int primary key, name varchar(255), age int, score int);");
31     //批量插入:odbc风格
32     //预处理语句
33     query.prepare("insert into student(name, age, score) values(?, ?, ?);");
34     // 给字段设置内容
35     QVariantList nameList;
36     nameList << "xiaoming" << "xiaokong" << "xiaojiang";
37     QVariantList ageList;
38     ageList << 22 << 21 << 24;
39     QVariantList scoreList;
40     scoreList << 89 << 99 << 78;
41     //给字段绑定相应的值,必须按顺序绑定
42     query.addBindValue(nameList);
43     query.addBindValue(ageList);
44     query.addBindValue(scoreList);
45     //执行预处理命令
46     query.execBatch();
47 
48     query.exec("select * from student");
49     while (true == query.next()) {  //一行一行遍历
50         //取出当前行的内容,以列为单位
51         qDebug() << query.value(0).toInt()  //取第一列
52                  << query.value(1).toString() //取第二列
53                  << query.value("age").toInt()
54                  << query.value("score").toInt();
55     }
56 }
57 
58 Widget::~Widget()
59 {
60     delete ui;
61 }

View Code

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

《生活大爆炸》之科学揭秘

《生活大爆炸》之科学揭秘

乔治·毕姆 / 韩准、徐漪、江业华、叶夜 / 世界图书出版公司 / 2012-12 / 49.00元

《 之科学揭秘:GEEK探索频道》对流行美剧《生活大爆炸》进行“深度解密”,重点在解读剧中涉及的流行文化及科学元素。正如我们所知,《生活大爆炸》是一部“技术含量很高”的肥皂剧。不光是普通观众,科学家也爱《生活大爆炸》。《 之科学揭秘:GEEK探索频道》中,科学家详尽为你解释了电视剧中出现的科学道理和典故。包括谢尔顿的高深弦理论、霍华德的花生过敏是怎么回事、如果你和谢尔顿的妈妈有同样的信仰该如何看待......一起来看看 《《生活大爆炸》之科学揭秘》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

URL 编码/解码
URL 编码/解码

URL 编码/解码