QT 数据库学习笔记QT操作SQLite数据库
Posted 火山上的企鹅
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT 数据库学习笔记QT操作SQLite数据库相关的知识,希望对你有一定的参考价值。
文章目录
QT 其它文章请点击这里: QT 学习笔记
一、概念
SQLite 是一个c语言库,实现了一个小型、快速、自包含、高可靠性、全功能的SQL数据库引擎。 SQLite是世界上使用最多的数据库引擎。 SQLite内置在所有手机和大多数电脑中,并与人们每天使用的无数其他应用程序绑定在一起。
二、实例
用一个操作实例来展示简单的创建数据库、插入数据,删除数据、查询数据及修改数据:
#include <QCoreApplication>
#include <QDebug>
#include <QStringList>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
bool testSQLCommonOPeration()
{
///--创建一个SQLite数据库连接
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
//数据库连接命名
db.setDatabaseName("myDatabase.db");
//打开数据库
if(!db.open()) {
qDebug() << "错误: 连接数据库失败!" << db.lastError() << "\\n";
}
else {
qDebug() << "成功连接数据库!\\n" ;
}
///--以下执行相关sql语句
//创建表格
QSqlQuery query;
//新建student表,id设置为主键,还有一个name项
if(!query.exec("create table student(id int primary key, name varchar, age int)")) {
qDebug() << "错误:不能创建表"<< query.lastError()<< "\\n";
} else {
qDebug() << "创建表成功!\\n";
}
qDebug() << "----------【增】----------";
//向表中插入3条记录
if(!query.exec("insert into student values(1,'张三',21)")) {
qDebug() << "插入失败" << query.lastError();
} else {
qDebug() << "插入 <<1,'张三',21>>" ;
}
if(!query.exec("insert into student values(2,'李四',23)")) {
qDebug() << "插入失败" << query.lastError();
} else {
qDebug() << "插入 <<2,'李四',23>> " ;
}
if(!query.exec("insert into student values(3,'王五',20)")) {
qDebug() << "插入失败\\n" << query.lastError() << "\\n";
}
else {
qDebug() << "插入 <<3,'王五',20>> \\n" ;
}
qDebug() << "----------【查】----------";
//查寻所有,并打印
if(!query.exec("select * from student")) {
qDebug()<< "查询失败!" << query.lastError() << "\\n";
}
else {
qDebug()<<"查询所有的值:";
while(query.next()) {
int id = query.value(0).toInt();
QString name = query.value(1).toString();
int age = query.value(2).toInt();
qDebug()<<QString("id:%1 name:%2 age:%3").arg(id).arg(name).arg(age);
}
}
//查找表中id >=2 的记录的值
if(!query.exec("select id,name,age from student where id >= 2")) {
qDebug()<< "查询指定id失败!" << query.lastError() << "\\n";
}
//query.next()指向查找到的第一条记录,然后每次后移一条记录
else {
qDebug()<< "\\n查询ID大于等于2值:";
while(query.next())
{
int id = query.value(0).toInt();
QString name = query.value(1).toString();
int age = query.value(2).toInt();
qDebug()<<QString("id:%1 name:%2 age:%3").arg(id).arg(name).arg(age);
}
}
qDebug() << "\\n----------【删】----------";
query.exec("delete from student where id=3"); //删除3 再次查询,发现王五已经被删除了
//查寻所有,并打印
if(!query.exec("select * from student")) {
qDebug()<< "查询失败!" << query.lastError() << "\\n";
}
else {
qDebug()<<"删除id等于3后,再打印!";
while(query.next()) {
int id = query.value(0).toInt();
QString name = query.value(1).toString();
int age = query.value(2).toInt();
qDebug()<<QString("id:%1 name:%2 age:%3").arg(id).arg(name).arg(age);
}
}
qDebug() << "\\n----------【改】----------";
//修改数据
query.exec("update student set name = '小明' where id = 2");
//查寻所有,并打印
if(!query.exec("select * from student")) {
qDebug()<< "查询失败!" << query.lastError() << "\\n";
}
else {
qDebug()<<"修改id等于2的名字,再打印!";
while(query.next()) {
int id = query.value(0).toInt();
QString name = query.value(1).toString();
int age = query.value(2).toInt();
qDebug()<<QString("id:%1 name:%2 age:%3").arg(id).arg(name).arg(age);
}
}
return true;
}
void testSQLDrivers() //测完qtsql模块都支持哪些数据库驱动
{
qDebug() << "qtsql模块支持的数据库驱动";
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug() << driver;
qDebug() << "\\n";
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//测试驱动
//testSQLDrivers();
//测试数据库建立、插入、查询、删除操作
testSQLCommonOPeration();
return a.exec();
}
打印如下:
数据库驱动测试打印结果如下:
生成的数据库文件:
三、可视化工具打开数据库
打开 SQLiteStudio 工具,按照以下步骤操作:
打开生生成的数据库:
打开后如下:
QT 其它文章请点击这里: QT 学习笔记
以上是关于QT 数据库学习笔记QT操作SQLite数据库的主要内容,如果未能解决你的问题,请参考以下文章