首页 > 数据库 >QT6实现创建与操作sqlite数据库三种方式方式对比(二)

QT6实现创建与操作sqlite数据库三种方式方式对比(二)

时间:2024-03-21 09:29:50浏览次数:30  
标签:QT6 sqlite const Qt 方式 int 数据库 QSqlTableModel QModelIndex

一.概述

Qt访问Sqlite数据库的三种方式(即使用三种类库去访问),QSqlQuery、QSqlQueryModel、QSqlTableModel,对于这三种类库,可看为一个比一个上层,也就是封装的更厉害,甚至第三种QSqlTableModel,根本就不需要开发者懂SQL语言,也能操作Sqlite数据库。

二.Qt读写Sqlite数据库的三种方式

1.QSqlQuery方式:

(1)上一篇文章《QT6实现创建与操作sqlite数据库(一)》已经讲述了QSqlQuery方式操作sqlite数据库,有详细代码,文章链接:

https://blog.csdn.net/xieliru/article/details/136829200?spm=1001.2014.3001.5502

(2)可以执行任意的SQL语句,可直接进行insert、delete、update等操作

优点:

完全自由编写和执行sql语句,可做任意的查询和操作

性能高,可直接操作数据库结构

支持事务

缺点:

需要自行处理结果集,较复杂

不支持直接编辑。需要自行在程序中处理添加、修改和删除。

2.QSqlQueryModel :通过设置SELECT语句查询获取内容,Model数据是只读的,不能进行编辑。所以需要结合QSqlQuery一起使用。

3.QSqlTableModel : 直接设置一个数据表的名称,可以获取数据表的全部记录,拓展在于在各种view上展示表格数据的同时,还允许用户进行编辑操作。

继承于QSqlQueryModel,与QSqlQueryModel功能相似。

比QSqlQueryModel的限制在于不能是任意sql语句,只是对单个数据表操作。

该类提供了一个可读写单张SQL表的可编辑数据模型,功能:修改,插入,删除,查询和排序。

  1. QSqlRelationalTableModel: 编辑一个数据表,将代码字段通过关系与代码表关联,将代码字段的编辑转换为直观的内容选择编辑。

  • QSqlTableModel常用函数

//获取水平头或垂直头标题

QVariant headerData ( intsection,Qt::Orientationorientation, introle= Qt::DisplayRole ) const

//设置水平头或垂直头标题

bool setHeaderData ( intsection,Qt::Orientationorientation, constQVariant&value, introle= Qt::EditRole )

//返回行数

int rowCount ( constQModelIndex&parent= QModelIndex() ) const

//返回列数

int columnCount ( constQModelIndex&index= QModelIndex() ) const

//model->removeColumns (0)删除第一列

virtual bool removeColumns ( int column, int count, const QModelIndex & parent = QModelIndex() )

//提交所有被修改的数据,然后修改的数据被保存在数据库中

bool QSqlTableModel::submitAll ()

//撤销所有的修改,如果数据库已经被提交了修改,就不能通过撤销修改改回来了

void QSqlTableModel::revertAll ()

//恢复指定行的改变

virtual void revertRow ( int row )

//筛选,按照字符串filter对数据库进行筛选,相当于SQL中的WHERE语句

void QSqlTableModel::setFilter ( const QString & filter )

//在筛选和排序的条件下,将数据库中符合要求的在mode表格中显示出来

bool QSqlTableModel::select ()

//排序操作。按照列和Qt::SortOrder排序。Qt::SortOrder有升序和降序

void QSqlTableModel::setSort ( int column, Qt::SortOrder order )

//插入行

bool insertRow ( int row, const QModelIndex & parent = QModelIndex() )

// 插入列

bool insertColumn ( intcolumn, constQModelIndex&parent= QModelIndex() )

//设置保存策略为手动提交

model->setEditStrategy(QSqlTableModel::OnManualSubmit);

参考文章:

https://blog.csdn.net/wxl1986622/article/details/107429450

标签:QT6,sqlite,const,Qt,方式,int,数据库,QSqlTableModel,QModelIndex
From: https://blog.csdn.net/xieliru/article/details/136863990

相关文章

  • rootfs打包方式
    参考资料:https://blog.csdn.net/weixin_43269452/article/details/131169725https://blog.csdn.net/u012787604/article/details/121685547https://zhuanlan.zhihu.com/p/637951209?utm_id=0https://blog.csdn.net/m0_71272694/article/details/127028867https://blog.csdn.......
  • VUE3 十种组件通信的方式(附详细代码)
    props用途:可以实现父子组件、子父组件、甚至兄弟组件通信父组件<template><div><Son:money="money"></Son></div></template><scriptsetuplang="ts">importSonfrom'./son.vue'import{re......
  • Java中常见字符串拼接九种方式
    一、前言在Java编程中,字符串拼接是一项非常基础的操作,它涉及到了很多日常开发工作中常见的场景,例如拼接SQL语句、构建HTTP请求参数等等。因此,对于掌握好字符串拼接技巧不仅有助于提高代码效率,而且能够避免一些潜在的性能问题。下面我们就来列举出来几种方式,搭配例子!二......
  • 密码加密|jsencrypt|md5|加密解密的两种方式
    一、md5npminstallmd5二、JSEncrypt2.1介绍JSEncrypt属于RSA加密,RSA加密算法是一种非对称加密算法;2.2使用安装:npminstalljsencrypt--dev封装工具:utils/jsencrypt.jsimportJSEncryptfrom'jsencrypt/bin/jsencrypt.min'//密钥对生成http://web.cha......
  • V208实现OnlyUpdate方式的OTA
    目录与多数沁恒家的MCU一样,V208的LD文件、启动文件使用的是公共文件,故不建议直接覆盖原路径中的文件,否则会导致其他工程的编译出问题。本文以MultiCentPeri例程作为原始例程,为其添加外置BLE固定库的OTA框架。步骤一:拷贝文件。完整复制一份MultiCentPeri工程的文件夹到同一目录......
  • 远程抓包的几种方式
    远程抓包远程抓包环境Linux环境SSH抓包网络转发TCP监听转发TCP直接转发Windows环境网络设备环境远端系统为linux,一般使用tcpdump;远端系统为windows,一般使用tshark(wireshark的命令行版本,包含在wireshark安装包中);近端(分析端)为linux或者windows一般使用wire......
  • 【Vue3】组件通信以及各种方式的对比
    方式一:props「父」向「子」组件发送数据父组件:定义需要传递给子组件的数据,并使用v-bind指令将其绑定到子组件的props上。<template><child-component:message="parentMessage"/></template><scriptsetup>importChildComponentfrom'./ChildComponent.......
  • 【MySql】SQLite和MySQL的区别
    SQLite和MySQL都是热门的关系型数据库管理系统,但是它们之间存在一些主要的差异:部署模式:SQLite是一个嵌入式数据库,它的所有数据都存储在一个单独的磁盘文件中,不需要安装数据库服务器,特别适合小型项目、桌面应用程序或者IoT设备等。MySQL是一个服务式数据库,需要设立专门的数据......
  • [转]Python格式化字符串的4种方式
     文章目录Python格式化字符串的4种方式一:%号二:str.format三:f-Strings四:标准库模板五:总结四种方式的应用场景 Python格式化字符串的4种方式一:%号%号格式化字符串的方式从Python诞生之初就已经存在时至今日,python官方也并未弃用%号,但也并不推荐这种格式化方式......
  • 现代化方式打造CSAPP环境
    前情提要距离我上次尝试完成Csapp已是一年前,在期末周时迅速放弃了两年前的环境搭建ArchLinux本地一把梭,出于对本地环境的隔离与保护这次将使用容器化技术+Vscode搭建尽量避免对本机的影响,以及达到对环境更好的管理与备份。yay-Sdockersudouseradd-aGdocker$USER#......