
08.QT中sqlite3数据库基本操作
确保数据库连接成功建立,否则会导致后续操作失败。 在关闭数据库时,记得调用 如果需要更高效的查询性能,可以考虑使用预编译查询和绑定值的方式。
发布日期:2021-05-15 02:37:29
浏览次数:20
分类:精选文章
本文共 3411 字,大约阅读时间需要 11 分钟。
Qt版本数据库操作指南
1. 创建项目时选择SQL模块
在使用Qt开发时,如果需要进行数据库操作,首先需要在项目配置中选择合适的数据库模块。在这个案例中,我们选择了SQLite作为数据库引擎。SQLite是Qt开发中非常常用的嵌入式数据库,支持多种操作,如插入、删除、更新和查询等。
2. 简易效果图说明
在开发过程中,界面设计也是一个关键环节。以下是一个简易的效果图说明,展示了数据库操作的主要界面。图中包括创建表、插入数据、删除数据、更新数据以及查询数据等功能。
3. 代码说明
以下是与数据库操作相关的代码示例。这些代码用于实现前面提到的各种数据库操作,包括连接数据库、创建表、插入数据、删除数据、更新数据以及查询数据等功能。
代码结构
#include "SqliteDemo.h"#include#include #include #include #include #include #include
类成员变量
private: QSqlDatabase db; QSqlQueryModel model; QSqlTableView view; QPushButton *createBtn; QPushButton *insertBtn; QPushButton *deleteBtn; QPushButton *updateBtn; QPushButton *queryBtn;
初始化方法
SqliteDemo::SqliteDemo(QWidget *parent) : QMainWindow(parent){ ui->setupUi(this); // 检查数据库是否存在默认连接 if (QSqlDatabase::contains("qt_sql_default_connection")) { db = QSqlDatabase::database("qt_sql_default_connection"); } else { db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName(QApplication::applicationDirPath() + "/config/" + "config.db"); } // 连接信号槽 connect(ui.createBtn, SIGNAL(clicked()), this, SLOT(createTableSlot())); connect(ui.insertBtn, SIGNAL(clicked()), this, SLOT(insertBtnSlot())); connect(ui.deleteBtn, SIGNAL(clicked()), this, SLOT(deleteBtnSlot())); connect(ui.updateBtn, SIGNAL(clicked()), this, SLOT(updateBtnSlot())); connect(ui.queryBtn, SIGNAL(clicked()), this, SLOT(queryBtnSlot()));}
创建表函数
void SqliteDemo::createTableSlot(){ QSqlQuery sql_query(db); QString sql = "create table pointInfo(id integer primary key autoincrement , name varchar(30), longitude double, latitude double, altitude double)"; sql_query.prepare(sql); if (!sql_query.exec()) { QMessageBox::about(this, "create table", "Failed to create table."); } else { QMessageBox::information(this, "create table", "Table created ok!"); }}
插入数据函数
void SqliteDemo::insertBtnSlot(){ QSqlQuery sql_query(db); QString sql = "insert into pointInfo values(?, ?, ?, ?, ?)"; sql_query.prepare(sql); sql_query.bindValue(1, "start"); sql_query.bindValue(2, 120.12233); sql_query.bindValue(3, 45.12233); sql_query.bindValue(4, 5000); if (!sql_query.exec()) { QMessageBox::about(this, "insert", "Failed to insert pointInfo."); } else { QMessageBox::information(this, "insert", "insert ok!"); }}
删除数据函数
void SqliteDemo::deleteBtnSlot(){ QSqlQuery sql_query(db); QString sql = "delete from pointInfo"; sql_query.prepare(sql); if (!sql_query.exec()) { QMessageBox::about(this, "delete", "delete Failed."); } else { QMessageBox::information(this, "delete", "删除所有记录"); }}
查询函数
void SqliteDemo::queryBtnSlot(){ model->setQuery("SELECT * FROM pointInfo"); model->setHeaderData(0, Qt::Horizontal, "id"); model->setHeaderData(1, Qt::Horizontal, "名称"); model->setHeaderData(2, Qt::Horizontal, "经度"); model->setHeaderData(3, Qt::Horizontal, "纬度"); model->setHeaderData(4, Qt::Horizontal, "高度"); view->setColumnWidth(5, 20); view->resize(800, 500); view->setModel(model); view->show();}
注意事项
在使用以上代码时,需要注意以下几点:
db->close()
方法,避免内存泄漏。通过以上步骤,可以轻松实现 Qt版本下的 SQLite 数据库操作,满足开发需求。
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年04月27日 03时04分11秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
解决微信小程序中 calc 失效问题
2019-03-11
JS数组去重的方法
2019-03-11
堆的应用_topK算法和堆排序
2019-03-11
最大半连通子图
2019-03-11
Remove Extra one 维护前缀最大最小值
2019-03-11
跳台阶
2019-03-11
另类加法,走方格的方案数,最近公共祖先
2019-03-11
线程学习5
2019-03-11
[Java Path Finder][JPF学习笔记][7]JPF输出详细程度设置
2019-03-11
GitHub完整记录数据库GHTorrent的下载和安装经验
2019-03-11
设计模式—— 三:依赖倒置原则
2019-03-11
SpringBoot打包之后乱码
2019-03-11
因SGA分配错误无法启动数据库
2019-03-11
Oracle修改字段类型方法总结
2019-03-11
ORA-00020 超过当前最大连接数
2019-03-11
合理控制oracle数据库具有DBA权限的用户
2019-03-11
喝红茶是否会上火
2019-03-11
Android进阶解密读书笔记2——第2章:Android系统启动——第1、2小节
2019-03-11
GreenDao之注解
2019-03-11