【数据库编程-SQLite3(二)】API-增删改查基础函数-(含源码)

学习分享

  • 1、sqlite3_exec函数
    • 1.1、使用sqlite3_exec进行【查】操作
      • 1.1.1、callback函数
    • 1.2、使用sqlite3_exec进行【增、删、改】操作
  • 2、sqlite3_get_table函数
    • 2.1、使用sqlite3_get_table函数进行【查】操作

1、sqlite3_exec函数

在这里插入图片描述

1.1、使用sqlite3_exec进行【查】操作

由于sqlite3_exec函数在使用时,需使用回调函数,回调函数为全局变量,程序的耦合性大大提升,不推荐使用该函数进行【查】操作。

#include <QApplication>
#include "sqlite3.h"
#include <QDebug>
#include <QString>//全局变量
//返回数据       列数     结果集二维数组   列名
//回调函数,每查询到一次数据就执行,没有总的数据集
int callback(void * pdata,int col,char **value,char ** name)
{qDebug()<<col;for(int i=0;i<col;i++){qDebug()<<name[i]<<":"<<value[i];}return 0;
}int main(int argc, char *argv[])
{QApplication a(argc, argv);sqlite3 * dbconnect=nullptr;int res=sqlite3_open("./xxxxxx.db",&dbconnect);if(res ==SQLITE_OK){qDebug()<<"数据打开成功!";}else{qDebug()<<"数据库打开失败!";qDebug()<<sqlite3_errmsg(dbconnect);//打印错误信息qDebug()<<sqlite3_errcode(dbconnect);//打印错误的代码}QString name= "hahaha",pwd="654321";QString sql= QString("SELECT *FROM tbl_user WHERE user_name ='%1' AND user_pwd ='%2'").arg(name).arg(pwd);qDebug()<<sql;char * errmeg=nullptr;res = sqlite3_exec(dbconnect,sql.toUtf8(),callback,nullptr,&errmeg);if(res ==SQLITE_OK){qDebug()<<"sql语句执行成功!";}else{qDebug()<<sqlite3_errmsg(dbconnect);//打印错误信息qDebug()<<sqlite3_errcode(dbconnect);//打印错误的代码}//2、关闭数据库sqlite3_close(dbconnect);return a.exec();
}

1.1.1、callback函数

在这里插入图片描述

1.2、使用sqlite3_exec进行【增、删、改】操作

#include <QApplication>
#include "sqlite3.h"
#include <QDebug>
#include <QString>
int main(int argc, char *argv[])
{QApplication a(argc, argv);sqlite3 * dbconnect=nullptr;//1、打开数据库int res=sqlite3_open("./xxxxxx.db",&dbconnect);if(res ==SQLITE_OK){qDebug()<<"数据打开成功!";}else{qDebug()<<"数据库打开失败!";qDebug()<<sqlite3_errmsg(dbconnect);//打印错误信息qDebug()<<sqlite3_errcode(dbconnect);//打印错误的代码}QString sql1="update tbl_user set user_pwd ='121212' where user_name='hahaha';";QString sql2="insert into tbl_user values(9,'alalal','123456',0,'2023-08-22 19:53:00');";QString sql3="delete  from tbl_user where user_id=7;";char * errmeg=nullptr;res = sqlite3_exec(dbconnect,sql1.toUtf8(),nullptr,nullptr,&errmeg);if(res ==SQLITE_OK){qDebug()<<"sql语句执行成功!";}else{qDebug()<<sqlite3_errmsg(dbconnect);//打印错误信息qDebug()<<sqlite3_errcode(dbconnect);//打印错误的代码}//2、关闭数据库sqlite3_close(dbconnect);return a.exec();
}

2、sqlite3_get_table函数

在这里插入图片描述

2.1、使用sqlite3_get_table函数进行【查】操作

#include <QApplication>
#include "sqlite3.h"
#include <QDebug>
#include <QString>
int main(int argc, char *argv[])
{QApplication a(argc, argv);sqlite3 * dbconnect=nullptr;//1、打开数据库int res=sqlite3_open("./xxxxxx.db",&dbconnect);if(res ==SQLITE_OK){qDebug()<<"数据打开成功!";}else{qDebug()<<"数据库打开失败!";qDebug()<<sqlite3_errmsg(dbconnect);//打印错误信息qDebug()<<sqlite3_errcode(dbconnect);//打印错误的代码}char **qres =nullptr;int row=0,col=0;char*errmeg =nullptr;QString sql1="SELECT * FROM tbl_user WHERE user_name ='alalal'";int res =sqlite3_get_table(dbconnect,sql1.toUtf8(), &qres, &row, &col, &errmeg);if(res ==SQLITE_OK){qDebug()<<"sql语句执行成功!";if(row>0){	//qres第一行就是字段名称,所以遍历是i从1开始for(int i=0;i<=row;i++){qDebug()<<qres[i*col]<<" "<<qres[i*col+1]<<" "<<qres[i*col+2]<<" "<<qres[i*col+3];}}}else{qDebug()<<sqlite3_errmsg(dbconnect);//打印错误信息qDebug()<<sqlite3_errcode(dbconnect);//打印错误的代码}//2、关闭数据库sqlite3_close(dbconnect);return a.exec();
}

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

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

相关文章

离散数学--连通性和矩阵

目录 0.关系的运算和性质 1.通路和回路 2.连通关系 3.割点&#xff08;边&#xff09;和点&#xff08;边&#xff09;割集 4.强&#xff08;弱&#xff09;连通&单向连通 0.关系的运算和性质 &#xff08;1&#xff09;这个运算包括了矩阵的运算&#xff0c;包括这个…

Mysql学习笔记-SQL优化总结

详细内容参见https://blog.csdn.net/qingwufeiyang_530/article/details/139705898?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22139705898%22%2C%22source%22%3A%22qingwufeiyang_530%22%7D

效果超越ControlNet+IP-Adapter和FreeControl!Ctrl-X:可控文生图新框架(加州大学英伟达)

文章链接&#xff1a;https://arxiv.org/pdf/2406.07540 项目链接&#xff1a;https://genforce.github.io/ctrl-x/ 最近的可控生成方法&#xff0c;如FreeControl和Diffusion Self-guidance&#xff0c;为文本到图像&#xff08;T2I&#xff09;扩散模型带来了细粒度的空间…

《全职猎人》

《全职猎人》 [1-2]是日本漫画家富坚义博的作品。 1999年版改编电视动画由日本动画公司负责动画制作&#xff0c;于1999年10月16日&#xff0d;2001年3月30日在富士电视台播出&#xff0c;该动画的故事至贪婪之岛篇章结束&#xff0c;全92话。 该作在富坚义博老师天马行空的想…

Gstreamer学习3----灌数据给管线之appsrc

参考资料 Basic tutorial 8: Short-cutting the pipeline gstreamer向appsrc发送帧画面的代码_gst appsrc可变帧率-CSDN博客 在官网教程Basic tutorial 8: Short-cutting the pipeline 里面&#xff0c;讲了一个例子&#xff0c;push音频数据给管线&#xff0c;视频的例子更…

二分+ST表+递推,Cf 1237D - Balanced Playlist

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1237D - Codeforces 二、解题报告 1、思路分析 case3提示我们一件事情&#xff1a;如果存在某个位置永远不停止&#xff0c;那么所有位置都满足永远不停止 很容易证明 随着下标右移&#xff0c…

闲聊最近招聘面试

最近在为团队招聘开发人员&#xff0c;筛选了200多份简历&#xff0c;面试了50多人&#xff0c;感触良多&#xff0c;回想当初自己多多少少也存在这些问题&#xff0c;想着做一个总结。 首先&#xff0c;面试不是闲聊&#xff0c;要通过短暂的时间尽可能向面试官展示你的各方面…

Spring Boot + EasyExcel + SqlServer 进行批量处理数据

前言 在日常开发和工作中&#xff0c;我们可能要根据用户上传的文件做一系列的处理&#xff0c;本篇文章就以Excel表格文件为例&#xff0c;模拟用户上传Excel文件&#xff0c;讲述后端如何高效的进行数据的处理。 一.引入 EasyExcel 依赖 <!-- https://mvnrepository.com/…

VMware Ubuntu 虚拟机网卡消失及解决办法

VMware Ubuntu 虚拟机网卡消失 描述原因查找解决方法 描述 在正常使用过程中重启后发现 VMware Ubuntu 虚拟机中的网卡消失了&#xff0c;使用 ifconfig 查看只能看到本地回环&#xff1a; 原因查找 使用如下命令查看是否和我这边遇到的问题一致的原因。 sudo lshw -c netwo…

USB转I2C转SPI芯片CH341与CH347比较

1. 芯片中文资料&#xff1a; USB转I2C转SPI芯片CH341 高速USB转接芯片CH347转9M双串口转I2C转SPI转JTAG转SWD USB2.0高速转接芯片CH347应用开发手册 2. CH341与CH347比较&#xff1a; 类别CH341CH347备注串口速度2M9MCH347的串口速度更快设置CH341的I2C或SPI不能与串口同…

【Netty】ByteBuffer原理与使用

Buffer则用来缓冲读写数据&#xff0c;常见的buffer有&#xff1a; ByteBuffer MappedByBuffer DirectByteBuffer HeapByteBuffer hortBuffer IntBuffer LongBuffer FloatBuffer DoubleBuffer CharBuffer 有一个普通文本文件data.txt,内容为&#xff1a; 1234567890a…

决策树概念

图例 概念 决策树基本上就是对经验的总结 决策树的构成&#xff0c;分为两个阶段。构造和剪枝 构造 概念 构造就是生成一颗完整的决策树。构造的过程就是选择什么属性作为节点的过程 构造过程&#xff0c;会存在3种节点 根节点&#xff1a;就是树的最顶端&#xff0c;最…

WPF/C#:异常处理

什么是异常&#xff1f; 在C#中&#xff0c;异常是在程序执行过程中发生的特殊情况&#xff0c;例如尝试除以零、访问不存在的文件、网络连接中断等。这些情况会中断程序的正常流程。 当C#程序中发生这种特殊情况时&#xff0c;会创建一个异常对象并将其抛出。这个异常对象包…

华为云CodeArts API:API管理一体化平台 5月新特性上线啦!

CodeArts API是华为云API全生命周期管理一体化解决方案平台&#xff0c;支持开发者高效实现API设计、API开发、API测试、API托管、API运维、API变现的一站式体验。 通过以API契约为锚点&#xff0c;CodeArts API保证API各阶段数据高度一致&#xff0c;为开发者提供友好易用的A…

FreeRTOS队列(queue)

队列(queue)可以用于"任务到任务"、 "任务到中断"、 "中断到任务"直接传输信息。 1、队列的特性 1、1常规操作 队列的简化操如下图所示&#xff0c;从此图可知&#xff1a; 队列中可以包含若干数据&#xff1a;队列中有若干项&#xff0c;这…

【C++】实现学生管理系统(完整版)

&#x1f495;&#x1f495;&#x1f495;大家好&#xff0c;这是作业侠系列之C实现学生管理系统&#xff0c;还是那句话&#xff0c;大家不想cv或者cv了跑不起来,三连后都可以来找我要源码&#xff0c;私信或评论留下你的邮箱即可。有任何问题有可以私聊我&#xff0c;大家觉得…

YOLOv10涨点改进SPPF创新结构,重新设计全局平均池化层和全局最大池化层,增强全局视角信息和不同尺度大小的特征

本文改进:SPPF_improve利用全局平均池化层和全局最大池化层,加入一些全局背景信息和边缘信息,从而获取全局视角信息并减轻不同尺度大小所带来的影响,强烈推荐,适合直接使用,paper创新级。 目录 1,YOLOv10介绍 1.1 C2fUIB介绍 1.2 PSA介绍 1.3 SCDown 2.SPP &SP…

TSP:人工原生动物优化器(APO)求解旅行商问题TSP(可以更改数据),MATLAB代码

一、旅行商问题介绍 二、人工原生动物优化算法求解TSP 2.1算法介绍 人工原生动物优化器&#xff08;Artificial Protozoa Optimizer &#xff0c;APO&#xff09;由Xiaopeng Wang等人于2024年提出&#xff0c;其灵感来自自然界中的原生动物。APO 模拟了原生动物的觅食、休眠和…

Python合并文件(dat、mdf、mf4)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

【three.js】设置canvas画布背景透明

通过Three.js渲染一个模型的时候&#xff0c;不希望canvas画布有背景颜色&#xff0c;也就是canvas画布完全透明&#xff0c;可以透过canvas画布看到画布后面叠加的HTML元素图文&#xff0c;呈现出来一种三维模型悬浮在网页上面的效果。 比如我们现在的模型背景是黑色的&#…