Qt-数据库操作SQLite
阅读原文时间:2023年07月13日阅读:1

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数据库

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

(2)创建数据库

语法和之前操作MySql一样:

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

(3)批量插入条目

 //批量插入:odbc风格  
 //预处理语句  
 query.prepare("insert into student(name, age, score) values(?, ?, ?);");  
 // 给字段设置内容  
 QVariantList nameList;  
 nameList << "xiaoming" << "xiaokong" << "xiaojiang";  
 QVariantList ageList;  
 ageList <<  <<  << ;  
 QVariantList scoreList;  
 scoreList <<  <<  << ;  
 //给字段绑定相应的值,必须按顺序绑定  
 query.addBindValue(nameList);  
 query.addBindValue(ageList);  
 query.addBindValue(scoreList);  
 //执行预处理命令  
 query.execBatch();

(4)遍历输出

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

完整代码:

#include "widget.h"
#include "ui_widget.h"
#include
#include
#include
#include
#include

Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);

 //打印qt支持的数据库驱动  
 qDebug() << QSqlDatabase::drivers();

 //添加sqlite数据库  
 db = QSqlDatabase::addDatabase("QSQLITE");  
 //设置数据库  
 db.setDatabaseName("../info.db");  
 //打开数据库  
 if (db.open() == false) {  
     QMessageBox::warning(this, "错误", db.lastError().text());  
     return;  
 }  
 //操作sql语句  
 QSqlQuery query;  
 query.exec("create table student(id int primary key, name varchar(255), age int, score int);");  
 //批量插入:odbc风格  
 //预处理语句  
 query.prepare("insert into student(name, age, score) values(?, ?, ?);");  
 // 给字段设置内容  
 QVariantList nameList;  
 nameList << "xiaoming" << "xiaokong" << "xiaojiang";  
 QVariantList ageList;  
 ageList <<  <<  << ;  
 QVariantList scoreList;  
 scoreList <<  <<  << ;  
 //给字段绑定相应的值,必须按顺序绑定  
 query.addBindValue(nameList);  
 query.addBindValue(ageList);  
 query.addBindValue(scoreList);  
 //执行预处理命令  
 query.execBatch();

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

}

Widget::~Widget()
{
delete ui;
}

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章