Qt-数据库操作SQLite

摘要:
P=88描述:本文简要描述了如何在Qt中操作SQLite);“);4//设置字段5QVariantListnameList;6nameList˂˂”xiaoming“˂˂”xiaokong“˂˂“xiaojiang”;7QVariantList;8ageList˂˂22˂˂21˂˂24;9QVariantListscoreList;10scoreList˂˂89˂˂99˂˂78;11//将相应值绑定到字段。12query.addBindValue;13query.addBindValue;14query.addBindingValue;15//执行预处理命令16query.exe cBatch(); 遍历输出1query。执行;2当{//逐行浏览当前行的内容时,//获取第4qDebug()列中当前行的属性<<query.value.toInt()//获取第一列5<<query.value.toString()//获得第二列6<<query.walue.toIn()7<<query_value.toInt();8}完整代码:1#include“widget.h”2#include“ui_widget.h”3#include<QDebug>4#include<QSqlDatabase>5#include ude6#include7#include8910Widget::Widget:11QWidget,12ui13{14ui-˃setupUi;1516//打印qt 17qDebug()支持的数据库驱动程序˂˂QSqlDatabase::drivers();1819//添加sqlite数据库20db=QSqlDatabase::addDatabase;21//设置数据库22db.setDatabaseName;23//打开数据库24if{25QMessageBox::warning;26return;27}28//操作sql语句29QSqlQueryquery;30查询。执行;31//批插入:odbc样式32//预处理语句33query。准备(“在事件中插入(姓名、年龄、分数)值(?

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     }

完整代码:

Qt-数据库操作SQLite第1张Qt-数据库操作SQLite第2张
 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

免责声明:文章转载自《Qt-数据库操作SQLite》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇蓝牙协议分析(4)_IPv6 Over BLE介绍C#穿透session隔离———Windows服务启动UI交互程序 be下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

如何指定GCC的默认头文件路径

如何指定GCC的默认头文件路径 网上偶搜得之,以之为宝:)原地址:http://blog.chinaunix.net/u/28781/showart.php?id=401631===============================================================================在交叉编译的时候我们需要...

vs2010驱动开发环境配置

1、文件 -> 新建 -> 项目 -> Visual C++ -> 空项目 名称:Driver 2、生成 -> 配置管理器   活动解决方案配置: 新建 名称:Driver Debug 从此处复制设置:Debug 3、视图 -> 属性管理器  展开刚配置的Driver Debug | Win32  ->  右...

使用 Python 的 SQLite JSON1 和 FTS5 扩展

早在九月份,编程界出现一个名为 json1.c 的文件,此前这个文件一直在 SQLite 的库里面。还有,笔者也曾总结通过使用新的 json1 扩展来编译 pysqlite 的技巧。但现在随着 SQLite 3.9.0 的发布,用户已经不用再费那么大劲了。 SQLite 3.9.0 版本做了很大的升级,不仅增加了万众期待的 json1 扩展,还增加了具有...

关于序列化:把某个对象序列化成字节流

在网络编程中。一个常常的操作是将本地的数据块转换成字符流并将其发送到远端。远端将这个字符串流恢复成数据库。如果有例如以下一个类CObject。编写两个函数,分别将CObject中的成员变量转换为一个字符流(convert2Stream()函数)。并将字符流的数据又一次恢复到一个CObject对象中(convert2Object()函数): char* c...

ZYNQ 7020学习笔记之PL侧普通信号中断PS的实验

1、参考 UG585 网络笔记 2、理论知识 见中断部分 3、实验目的 练习使用PL侧的普通信号来中断PS处理器。 4、实验过程 建立工程,设置并初始化串口中断,在运行程序之后,如果串口接收到N(1-63)个字节数据,则产生串口中断,Zynq响应中断,将数据从RXFIFO读出之后写入到DDR3预定的地址中。 5、实验平台 Microphase ZUS zy...

stl的stack在开发中的应用

 栈有后进先出特点,我们可以用它来暂时保存数据,在画板开发中,我用到了栈来保存用户的每一步操作,当用户点击撤销时可以把图像从栈里面取出,然后恢复。浏览器的前进和后退也是这个原理,只是它保存的是网页罢了。用stl可以轻松使用栈而不用去做复杂的函数定义,看下面的实例,希望通过下面的实例,让大家了解怎么用stl中的stack以及如何使用栈 #include &l...