【Qt】数据库编程(SQLite API)

server/2025/2/26 1:50:32/

目录

 一、文件夹的配置

二、编程工具的配置

1.指定库文件及其输出可执行文件位置

sqlite3.h%E5%A4%B4%E6%96%87%E4%BB%B6%E2%80%8B%E7%BC%96%E8%BE%91%E4%B8%89%E3%80%81%E4%BD%BF%E7%94%A8SQLite%E5%B8%B8%E8%A7%81API%E5%87%BD%E6%95%B0-toc" name="tableOfContents" style="margin-left:40px">        2.导入新添加的sqlite3.h头文件​编辑

三、使用SQLite常见API函数

1.打开数据库

2.关闭数据库

3.获取错误代码

4.获取错误信息

5.预编译SQL语句

6.绑定条件变量

7.结果集获取

8.行数据获取


 一、文件夹的配置

二、编程工具的配置

1.指定库文件及其输出可执行文件位置

LIBS+=$$PWD/lib/sqlite3.lib
DESTDIR=bin

  • LIBS+=$$PWD/lib/sqlite3.lib用于指定项目链接时需要包含的库文件,这里链接的是 SQLite3 数据库的库文件。

  • DESTDIR=bin用于指定项目构建生成的可执行文件或库文件的输出目录为 bin

sqlite3.h%E5%A4%B4%E6%96%87%E4%BB%B6%E2%80%8B%E7%BC%96%E8%BE%91%E4%B8%89%E3%80%81%E4%BD%BF%E7%94%A8SQLite%E5%B8%B8%E8%A7%81API%E5%87%BD%E6%95%B0" name="2.%E5%AF%BC%E5%85%A5%E6%96%B0%E6%B7%BB%E5%8A%A0%E7%9A%84sqlite3.h%E5%A4%B4%E6%96%87%E4%BB%B6%E2%80%8B%E7%BC%96%E8%BE%91%E4%B8%89%E3%80%81%E4%BD%BF%E7%94%A8SQLite%E5%B8%B8%E8%A7%81API%E5%87%BD%E6%95%B0">2.导入新添加的sqlite3.h头文件

三、使用SQLite常见API函数

sqlite3.h%3E" name="%E5%A4%B4%E6%96%87%E4%BB%B6%20%23include%20%3Csqlite3.h%3E">头文件 #include <sqlite3.h>

1.打开数据库

int sqlite3_open(const char *,sqlite3 **db)

参数:1数据库文件【IN】

           2、sqlite3 数据指针【out】

2.关闭数据库

int sqlite3_close(sqlite3 *db)

参数:1数据库文件【IN】

3.获取错误代码

int sqlite3_errcode(sqlite3 *db)

参数:1sqlite3结构指针

4.获取错误信息

const char *sqlite3_errmsg(sqlite3 *db)

参数: sqlite3结构指针

5.预编译SQL语句

sqlite3_stmt 是 SQLite 库中的一个重要结构体,它代表了一个预编译的 SQL 语句对象,也被称为 “准备好的语句(prepared statement)”。

int sqlite3_prepare(sqlite3*, const char*, int,  sqlite3_stmt**,const char**)

参数:

        1数据库连接指针【IN】

        2sql语句【IN】

        3sql语句最大字符数【IN】

        4、处理后语句statement【out】

        5、返回sql语句未使用部分的指针【out】

6.绑定条件变量

int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));

参数:

1.sqlite3_stmt*预编译 SQL 语句对象指针。

2.int占位符位置,从 1 开始计数。

3.const char*要绑定的文本数据指针。

4.int n文本数据长度

5.void(*)(void*)回调函数指针,常用 SQLITE_STATIC 或 SQLITE_TRANSIENT 处理内存。

返回 SQLITE_OK 表示绑定成功,否则失败。

相关函数:

        int sqlite3_bind_int(sqlite3_stmt*, int, int)

int sqlite3_bind_double(sqlite_stmt *pstmt,int ,double value)

int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*))

7.结果集获取

int sqlite3_step(sqlite_stmt *pstmt)

参数:1statement对象【IN】

使用说明:

        返回SQLITE_ROW表示准备好一行的数据。

        返回SQLITE_DONE表示执行完成,无数据。

        如果只是执行SQL,则该函数只调用一次即可。

8.行数据获取

int sqlite3_column_int(sqlite_stmt *pstmt,int col)

参数:1pstmt-statement对象【IN】

           2、col-列位置,0开始编号

const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);

不同类型的函数调用:

qDebug()<<"user_id="<<sqlite3_column_int(pstmt,0);

strcpy(name,(const char *)sqlite3_column_text(pstmt,1));

qDebug()<<"user_name="<<name;

//要将const unsigned char *转化为const char *


http://www.ppmy.cn/server/170659.html

相关文章

前端面试真题 2025最新版

文章目录 写在前文CSS怪异盒模型JS闭包闭包的形成闭包注意点 CSS选择器及优先级优先级 说说flex布局及相关属性Flex 容器相关属性&#xff1a;Flex 项目相关属性 响应式布局如何实现是否用过tailwindcss&#xff0c;有哪些好处好处缺点 说说对象的 prototype属性及原型说说 pro…

科普:“git“与“github“

Git与GitHub的关系可以理解为&#xff1a;Git是一种软件工具&#xff0c;而GitHub则是一个在线平台&#xff0c;它们是“一家子”。二者的关联最直接体现在你通过Git在GitHub仓库中clone软件包到你的机器中来。 具体来说&#xff1a; 一、Git 定义&#xff1a;Git是一个开源的…

Linux基本指令(上)

文章目录 目录1. Linux的介绍2. 基本指令2.1 ls 指令2.2 pwd 命令2.3 cd 指令2.4 touch 指令2.5 mkdir 指令2.6 rmdir 指令 && rm 指令2.7 man 指令2.8 cp 指令 目录 Linux的介绍基本指令 1. Linux的介绍 2. 基本指令 2.1 ls 指令 语法&#xff1a; ls [选项] [目录…

DeepSeek模型量化

技术背景 大语言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;&#xff0c;可以通过量化&#xff08;Quantization&#xff09;操作来节约内存/显存的使用&#xff0c;并且降低了通讯开销&#xff0c;进而达到加速模型推理的效果。常见的就是把Float16的浮…

【C# 数据结构】队列 FIFO

目录 队列的概念FIFO (First-In, First-Out)Queue<T> 的工作原理&#xff1a;示例&#xff1a;解释&#xff1a; 小结&#xff1a; 环形队列1. **FIFO&#xff1f;**2. **环形缓冲队列如何实现FIFO&#xff1f;**关键概念&#xff1a; 3. **环形缓冲队列的工作过程**假设…

三级分类bug解决

文章目录 前端后端 前端 <!DOCTYPE html> <html xmlns:th"http://www.thymeleaf.org" lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0&q…

如何将本地连接服务器中的文件内容复制到本机的剪贴板

因为任务需要通过了跳板机连接到服务器&#xff0c;修改代码测试代码用原生的VIM很不方便&#xff0c;因此想怎么把服务的代码内容方便的复制到本机&#xff0c;网上相关的介绍内容不太多&#xff0c;不过看到有内容介绍vim插件之类的&#xff0c;碰巧看到一个命令&#xff0c;…

dubbo转http方式调用

业务背景&#xff1a;在当前项目下&#xff0c;所有前端请求均通过外层网关转发到后端这边的dubbo服务&#xff0c;现计划去掉网关层&#xff0c;由前端直接http调用后端dubbo。 解决方案&#xff1a;在前端调用方式不变的前提下&#xff0c;后端服务新建controller层&#xf…