提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
…
前言
QSQLITE是静态数据库,不需要服务器,直接对文件进行操作(a.db),以类似excel表格形式保存。常用在嵌入式开发系统中,开源免费,.c和.h文件大概1M多。
一、包含各种头文件
#include <QSqlDatabase>
#include <QDebug>
#include <QMessageBox>
#include <QSqlError>
#include <QSqlQuery>
#include <QVariantList>
二、操作数据库
1. 打印qt支持的数据库驱动
代码如下(示例):
//打印Qt支持的数据库驱动
qDebug() << QSqlDatabase::drivers();
//控制台输出结果为("QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
2.添加数据库
代码如下(示例):
//添加SqlLite数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
3.设置数据库
//设置数据库
db.setDatabaseName("../info.db");
4.打开数据库
//打开数据库
if (!db.open())//数据库打开失败
{
QMessageBox::warning(this, "错误", db.lastError().text());
return;
}
5.创建数据库表
//创建对象,创建表
QSqlQuery query;
query.exec("create table student (id int primary key, name varchar(255), age int,score int)");//主键id和其字段name、age、score
6.批量插入
//Windows的ODBC风格操作数据库
//创建sql预处理语句?为占位符,后面将根据数据编译为普通sql语句
//批量插入
//odbc风格
//预处理语句
// ? 相当于占位符
query.prepare("insert into student(id,name,age,score) values(?,?,?,?)");
//给字段设置内容 list
QVariantList idList;
idList << 1 << 2 << 3;
QVariantList nameList;
nameList << "xiaoming" << "xiaolong" << "xiaojiang";
QVariantList ageList;
ageList << 11 << 22 << 33;
QVariantList scoreList;
scoreList << 59 << 69 << 79;
//给字段绑定相应的值,按顺序绑定
query.addBindValue(idList);
query.addBindValue(nameList);
query.addBindValue(ageList);
query.addBindValue(scoreList);
//执行预处理命令
query.execBatch();
与odbc风格不同的是,oracle风格的占位为 :+自定义名称(一般和键名称相同)
//query.prepare("insert into student(id,name,age,score) values(:id,:name,:age,:score)");
分别创建几个键的列表
//QVariantList idList, nameList, ageList, scoreList;
//idList << 1 << 2 << 3;
//nameList << "A" << "B" << "C";
//ageList << 11 << 22 << 33;
//scoreList << 59 << 69 << 79;
按字段绑定
//query.bindValue(":id", idList);
//query.bindValue(":name", nameList);
//query.bindValue(":age", ageList);
//query.bindValue(":score", scoreList);
执行预处理命令
//query.execBatch();
7.遍历查询
query.exec("select * from student");
while (query.next())//一行一行遍历
{
//取出当前行的内容
qDebug() << query.value(0).toInt()
<< query.value(1).toString()
<< query.value("age").toInt()
<< query.value("score").toInt();
}
三、总结
在vs2013+Qt5.5建立项目可以去实验。
可以通过链接[(https://sqlitebrowser.org/blog/version-3-12-2-released/)]下载软件去打开.db文件查看。