QT+SQLite数据库配置和使用

一、简介
1.1 SQLite(sql)是一款开源轻量级的数据库软件,不需要server,可以集成在其他软件中,非常适合嵌入式系统。Qt5以上版本可以直接使用SQLite(Qt自带驱动)。
二、下载和配置
2.1 SQLite下载官网下载链接
2.2 根据计算机的配置,选择所需项目是64位还是32位下载对应的压缩包
在这里插入图片描述
2.3 安装
在系统盘(C盘)建一个名称为“sqlite”的文件夹,把上面下载的两个压缩包解压到这个sqlite文件夹中
在这里插入图片描述

2.4 配置计算机环境变量
右键此电脑,点击“属性”,打开“高级系统设置。
在这里插入图片描述
2.5.验证安装是否成功
在这里插入图片描述
三、应用数据库主要是增删查改,下面是相关函数代码
3.1 首先包含相关库文件

#include <QtWidgets/QWidget>
#include <sstream>
#include <QString>
#include <QDomDocument>
#include <QTextStream>
#include <QFile>
#include <QDir>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QMessageBox>
#include <vector>

3.2 函数

#pragma region 创建并连接SQLite数据库
//创建并连接SQLite数据库
bool SQLite::CreateConnectDB(QString sql_name, QSqlDatabase &database)
{try{//建立并打开数据库database = QSqlDatabase::addDatabase("QSQLITE");database.setDatabaseName(sql_name);bool bol_sql_open = database.open();if (bol_sql_open == false){QMessageBox::critical(NULL, "Prompt", database.lastError().text());return false;}else{return true;}}catch (...){return false;}
}
#pragma endregion#pragma region 创建表格
//创建表格
bool SQLite::CreateTable(QString table_name)
{try{QSqlQuery sql_query;QString sql = "create table " + table_name + "(USERNAME text, PASSWORD text)";if (!sql_query.exec(sql)){QMessageBox::critical(NULL, "Prompt", sql_query.lastError().text());return false;}else{return true;}}catch (...){return false;}
}
#pragma endregion#pragma region 插入数据
//插入数据
bool SQLite::InsertData(QString table_name, QString user_name, QString password)
{try{QSqlQuery sql_query;QString sql = "insert into " + table_name + " values (?, ?)";sql_query.prepare(sql);sql_query.addBindValue(user_name);sql_query.addBindValue(password);if (!sql_query.exec()){QMessageBox::critical(NULL, "Prompt", sql_query.lastError().text());return false;}else{return true;}}catch (...){return false;}
}
#pragma endregion#pragma region 修改数据
//修改数据
bool SQLite::ModifyData(QString user_name, QString password)
{try{QSqlQuery sql_query;QString sql = "update LoginTable set PASSWORD = :PASSWORD where USERNAME = :USERNAME";sql_query.prepare(sql);sql_query.bindValue(":USERNAME", user_name);sql_query.bindValue(":PASSWORD", password);if (!sql_query.exec()){QMessageBox::critical(NULL, "Prompt", sql_query.lastError().text());return false;}else{return true;}}catch (...){return false;}
}
#pragma endregion#pragma region 查询数据
//查询数据
bool SQLite::QueryData(QString user_name, QString &password)
{try{//eg: "select * from LoginTable where USERNAME == 'user0';"QSqlQuery sql_query("select * from LoginTable where USERNAME == '" + user_name + "';");if (!sql_query.exec()){QMessageBox::critical(NULL, "Prompt", sql_query.lastError().text());return false;}else{while (sql_query.next()){password = sql_query.value(1).toString();}return true;}}catch (...){return false;}
}
#pragma endregion#pragma region 删除数据
//删除数据
bool SQLite::DeleteData(QString user_name)
{try{QSqlQuery sql_query("delete from LoginTable where USERNAME == '" + user_name + "';");if (!sql_query.exec()){QMessageBox::critical(NULL, "Prompt", sql_query.lastError().text());return false;}else{return true;}}catch (...){return false;}
}
#pragma endregion#pragma region 删除表格
//删除表格
bool SQLite::DeleteTable(QString table_name)
{try{QSqlQuery sql_query;sql_query.exec("drop table " + table_name);if (sql_query.exec()){QMessageBox::critical(NULL, "Prompt", sql_query.lastError().text());return false;}else{return true;}}catch (...){return false;}
}
#pragma endregion#pragma region 关闭数据库
//关闭数据库
bool SQLite::CloseDB( QSqlDatabase database)
{try{database.close();return true;}catch (...){return false;}
}
#pragma endregion

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/129739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GitLab(2)——Docker方式安装Gitlab

目录 一、前言 二、安装Gitlab 1. 搜索gitlab-ce镜像 2. 下载镜像 3. 查看镜像 4. 提前创建挂载数据卷 5. 运行镜像 三、配置Gitlab文件 1. 配置容器中的/etc/gitlab/gitlab.rb文件 2. 重启容器 3. 登录Gitalb ① 查看初始root用户的密码 ② 访问gitlab地址&#…

微信小程序-form表单-获取用户输入文本框的值

微信小程序-form表单-获取用户输入文本框的值 data: {userName: ,userPwd:""},//获取用户输入的用户名 userNameInput:function(e) {this.setData({userName: e.detail.value}) }, passWdInput:function(e) {this.setData({userPwd: e.detail.value}) }, //获取用户输…

Pycharm出现的一些问题和解决办法

1.每次启动打开多个项目&#xff0c;速度很慢。改为每次启动询问打开哪个单一项目 Setting -> Appearance & Behavior -> System Settings -> Project -> 关闭Reopen projects on startop 2.一直显示《正在关闭项目closing project》&#xff0c;关不上 pycha…

Java后端开发——JDBC组件

JDBC&#xff08;Java Database Connectivity&#xff09;是Java SE平台的一种标准API&#xff0c;它提供了一种标准的方法来访问关系型数据库&#xff0c;使得Java程序能够与各种不同的数据库进行交互&#xff0c;这篇文章我们来进行实验体验一下。 自定义JDBC连接工具类 1.编…

【IDEA使用maven package时,出现依赖不存在以及无法从仓库获取本地依赖的问题】

Install Parent project C:\Users\lxh\.jdks\corretto-1.8.0_362\bin\java.exe -Dmaven.multiModuleProjectDirectoryD:\学习\projectFile\study\study_example_service "-Dmaven.homeD:\Program Files\JetBrains\IntelliJ IDEA2021\plugins\maven\lib\maven3" "…

devops

git/jenkins 版本控制系统 gitlab 代码开发完成> 运维部署上线> 监控性能> cicd流水线部署&#xff0c; git和版本控制系统 git rootserver02:~/1103# git log --oneline 07f230c (HEAD -> main) first commit rootserver02:~/1103# git log -p 07f230c co…

LLC讲解

【精选】开关电源-LLC基本原理_llc 开关电源-CSDN博客

操作系统的线程模型

操作系统的线程调度有几个重要的概念&#xff1a; 调度器&#xff08;Thread Scheduler&#xff09;&#xff1a;内核通过操纵调度器对内核线程进行调度&#xff0c;并负责将线程的任务映射到各个处理器上内核线程&#xff08;Kernel Level Thread&#xff09;&#xff1a;简称…

【GitLab CI/CD、SpringBoot、Docker】GitLab CI/CD 部署SpringBoot应用,部署方式Docker

介绍 本文件主要介绍如何将SpringBoot应用使用Docker方式部署&#xff0c;并用Gitlab CI/CD进行构建和部署。 环境准备 已安装Gitlab仓库已安装Gitlab Runner&#xff0c;并已注册到Gitlab和已实现基础的CI/CD使用创建Docker Hub仓库&#xff0c;教程中使用的是阿里云的Docker…

100量子比特启动实用化算力标准!玻色量子重磅发布相干光量子计算机

2023年5月16日&#xff0c;北京玻色量子科技有限公司&#xff08;以下简称“玻色量子”&#xff09;在北京正大中心成功召开了2023年首场新品发布会&#xff0c;重磅发布了自研100量子比特相干光量子计算机——“天工量子大脑”。 就在3个月前&#xff0c;因“天工量子大脑”在…

java pdf,word,ppt转图片

pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0…

【Orangepi Zero2 全志H616】资料及环境搭建

一、资料文档 二、MobaXterm远程连接工具 三、修改登录密码 四、修改内核日志等级 五、配置网络 六、SSH 访问 OrangePi ZERO 2 七、配置 vim 八、基于官方外设开发SDK 一、资料文档 官网资料下载 GitHub&#xff1a;新版本的 orangepi-build 源码 环境搭建&#xff1a;新手配…

vue+asp.net Web api前后端分离项目发布部署

一、前后端项目介绍 1.前端项目是使用vue脚手架进行创建的。 脚手架版本&#xff1a;vue/cli 5.0.8 编译器版本&#xff1a;vs code 1.82.2 2.后端是一个asp.net Core Web API 项目 后端框架版本&#xff1a;.NET 6.0 编译器版本&#xff1a;vs 2022 二、发布部署步骤 第…

安卓抓包之小黄鸟

下载安装 下载地址: https://download.csdn.net/download/yijianxiangde100/88496463 安装apk 即可。 证书配置:

【嵌入式】HC32F07X CAN通讯配置和使用配置不同缓冲器以连续发送

一 背景说明 使用小华&#xff08;华大&#xff09;的MCU HC32F07X实现 CAN 通讯配置和使用 二 原理分析 【1】CAN原理说明&#xff08;参考文章《CAN通信详解》&#xff09;&#xff1a; CAN是控制器局域网络(Controller Area Network, CAN)的简称&#xff0c;是一种能够实现…

HTML基础知识——URL、文本标签、链接标签、图片标签、列表标签

目录 URL&#xff08;统一资源定位符&#xff09; 概述 网址的组成部分 协议 主机 端口 路径 查询参数 锚点 文本标签 示例&#xff1a; 链接标签 示例&#xff1a; 图片标签 示例&#xff1a; 列表标签 示例&#xff1a; URL&#xff08;统一资源定位符&#xff09;…

Go 中的 OOP - 多态性

Go 中的多态性是通过接口实现的。正如我们已经讨论过的&#xff0c;接口在 Go 中是隐式实现的。如果类型为接口中声明的所有方法提供定义&#xff0c;则该类型实现了接口。让我们看看 Go 中如何借助接口实现多态性。 使用接口的多态性 任何为接口的所有方法提供定义的类型都被…

玩转AIGC:如何选择最佳的Prompt提示词?

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

面试经典150题——Day30

文章目录 一、题目二、题解 一、题目 209. Minimum Size Subarray Sum Given an array of positive integers nums and a positive integer target, return the minimal length of a subarray whose sum is greater than or equal to target. If there is no such subarray, …

周赛369(位运算、分类讨论、记忆化搜索==>动态规划、树形DP)

文章目录 周赛369[2917. 找出数组中的 K-or 值](https://leetcode.cn/problems/find-the-k-or-of-an-array/)位运算模拟 [2918. 数组的最小相等和](https://leetcode.cn/problems/minimum-equal-sum-of-two-arrays-after-replacing-zeros/)分类讨论 [2919. 使数组变美的最小增量…