Windows下C++使用SQLite

1、安装

  进入SQLite Download Page页面,下载sqlite-dll-win-x86-*.zip、sqlite-amalgamation-*.zip、sqlite-tools-win-x64-*.zip三个包,这三个包里分别包含dll文件和def文件、头文件、exe工具。

  使用vs命令行工具生成.lib文件:进入dll和def文件所在的目录,执行lib /DEF:sqlite3.def /OUT:sqlite3.lib /MACHINE:x86后获得.lib文件,这样就可以通过dll文件、lib文件、头文件来开发SQLite了。

  exe工具可以进行SQLite操作,比如下面为创建数据库和表(输入.quit结束命令,SQL语句以分号结尾):

2、代码示例

#include <iostream>
#include "sqlite3.h"//SQL语句查询结果回调,比如对于select来说,查询到的每一条数据都会执行callback方法一次
static int callback(void* data/*sqlite3_exec()的第四个参数*/, int argc/*结果的列个数*/, char** argv/*结果字段值*/, char** azColName/*结果列名*/) {for (int i = 0; i < argc; i++) {printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");}printf("\n");return 0;
}int main()
{sqlite3* pDB = nullptr;char* zErrMsg = nullptr;const char* sql = nullptr;const char* data = "Callback function called";//打开数据库,不存在则创建int nRes = sqlite3_open("D:\\sqlite\\test.db", &pDB);if (nRes) {fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(pDB));exit(0);}//创建表,已存在则创建失败sql = "create table company("\"id integer primary key autoincrement,"\"name text not null,"\"age integer not null);";nRes = sqlite3_exec(pDB, sql, 0, 0, &zErrMsg);if (nRes != SQLITE_OK) {fprintf(stderr, "SQL error: %s\n", zErrMsg);sqlite3_free(zErrMsg);}//插入数据sql = "insert into company (id,name,age) values(1, 'Paul', 32); " \"insert into company (id,name,age) values (2, 'Allen', 25); " \"insert into company (id,name,age) values (3, 'Teddy', 23);";nRes = sqlite3_exec(pDB, sql, 0, 0, &zErrMsg);if (nRes != SQLITE_OK) {fprintf(stderr, "SQL error: %s\n", zErrMsg);sqlite3_free(zErrMsg);}//查询数据sql = "select * from company";nRes = sqlite3_exec(pDB, sql, callback, (void*)data, &zErrMsg);if (nRes != SQLITE_OK) {fprintf(stderr, "SQL error: %s\n", zErrMsg);sqlite3_free(zErrMsg);}printf("==============================================\r\n");//修改数据sql = "update company set age = 25 where id=1; select * from company";nRes = sqlite3_exec(pDB, sql, callback, (void*)data, &zErrMsg);if (nRes != SQLITE_OK) {fprintf(stderr, "SQL error: %s\n", zErrMsg);sqlite3_free(zErrMsg);}printf("==============================================\r\n");//删除数据sql = "delete from company where id=3; select * from company";nRes = sqlite3_exec(pDB, sql, callback, (void*)data, &zErrMsg);if (nRes != SQLITE_OK) {fprintf(stderr, "SQL error: %s\n", zErrMsg);sqlite3_free(zErrMsg);}sqlite3_close(pDB);
}

  

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

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

相关文章

[代码随想录23回溯]回溯的组合问题+分割子串

前言 回溯是什么&#xff1f; 题目链接 39. 组合总和 - 力扣&#xff08;LeetCode&#xff09; 40. 组合总和 II - 力扣&#xff08;LeetCode&#xff09; 131. 分割回文串 - 力扣&#xff08;LeetCode&#xff09; 一、组合问题 private:vector<vector<int>>r…

xinput1_3.dll放在哪里?当xinput1_3.dll丢失时的应对策略:详细解决方法汇总

在计算机系统的运行过程中&#xff0c;我们偶尔会遇到一些令人困扰的问题&#xff0c;其中xinput1_3.dll文件丢失就是较为常见的一种情况。这个看似不起眼的动态链接库文件&#xff0c;实则在许多软件和游戏的正常运行中发挥着至关重要的作用。一旦它丢失&#xff0c;可能会导致…

运行Zr.Admin项目(后端)

1.下载Zr.Admin代码压缩包 https://codeload.github.com/izhaorui/Zr.Admin.NET/zip/refs/heads/main 2.打开项目 我这里装的是VS2022社区版 进入根目录&#xff0c;双击ZRAdmin.sln打开项目 3.安装.net7运行时 我当时下载的代码版本是.net7的 点击安装 点击安装&#xff0…

MySQL 锁概述

1.锁的分类 根据不同的分类角度可将锁分为&#xff1a; 按是否共享分&#xff1a;S 锁、X 锁按粒度分&#xff1a;表级锁、行级锁、全局锁&#xff08;锁整个库&#xff09;、页锁&#xff08;锁数据页&#xff09;意向锁&#xff1a;意向 S 锁、意向 X 锁&#xff1a;都是表…

记Fastjson2的一个报ConcurrentModificationException的bug

错误背景&#xff1a;fastjson2的parseObject方法&#xff0c;在spring webflux项目中被调用&#xff0c;有时会报java.util.ConcurrentModificationException错误。报错处的代码如下图&#xff1a; 改了半天与并发安全相关的代码&#xff0c;还是会报此错误。后来改变思路搜…

【VScode】第三方GPT编程工具-CodeMoss安装教程

一、CodeMoss是什么&#xff1f; CodeMoss是一款集编程、学习和办公于一体的高效工具。它兼容多种主流平台&#xff0c;包括VSCode、IDER、Chrome插件、Web和APP等&#xff0c;支持插件安装&#xff0c;尤其在VSCode和IDER上的表现尤为出色。无论你是编程新手还是资深开发者&a…

音视频入门基础:AAC专题(13)——FFmpeg源码中,获取ADTS格式的AAC裸流音频信息的实现

音视频入门基础&#xff1a;AAC专题系列文章&#xff1a; 音视频入门基础&#xff1a;AAC专题&#xff08;1&#xff09;——AAC官方文档下载 音视频入门基础&#xff1a;AAC专题&#xff08;2&#xff09;——使用FFmpeg命令生成AAC裸流文件 音视频入门基础&#xff1a;AAC…

docker-compose搭建sfpt服务器

1. 搭建 创建sftp目录&#xff0c;进入该目录创建docker-compose.yml文件内容如下&#xff1a; version: 3.7services:sftp:image: atmoz/sftpcontainer_name: sftpports:- "122:22"volumes:- ./sftp-data:/homeenvironment:SFTP_USERS: "liubei:liubei161:10…

散斑/横向剪切/迈克尔逊/干涉条纹仿真技术分析

摘要 本博文提供了多种数据类型的干涉条纹仿真&#xff0c;并展示了它们对应的散斑干涉条纹。还分别给出了横向剪切干涉以及剪切散斑干涉条纹的仿真。 一、迈克尔逊干涉与散斑干涉仿真 下图为干涉条纹与对应的散斑干涉条纹的仿真示意图。其中&#xff0c;干涉条纹可认为是源…

Go快速开发框架2.6.0版本更新内容快速了解

GoFly企业版框架2.6.0版本更新内容较多&#xff0c;为了大家能够快速了解&#xff0c;本文将把更新内容列出详细讲解。本次更新一段时间以来大伙反馈的问题&#xff0c;并且升级后台安全认证机制&#xff0c;增加了RBAC权限管理及系统操作日志等提升后台数据安全性。 更新明细…

通过GRE协议组建VPN网络

GRE&#xff08;Generic Routing Encapsulation&#xff0c;通用路由封装协议&#xff09;协议是一种简单而有效的封装协议&#xff0c;它在网络中的广泛应用&#xff0c;比如在构建VPN网络。   GRE是一种封装协议&#xff0c;它允许网络层协议&#xff08;如IP&#xff09;的…

论文阅读 - 《Large Language Models Are Zero-Shot Time Series Forecasters》

Abstract 通过将时间序列编码为数字组成的字符串&#xff0c;我们可以将时间序列预测当做文本中下一个 token预测的框架。通过开发这种方法&#xff0c;我们发现像GPT-3和LLaMA-2这样的大语言模型在下游任务上可以有零样本时间序列外推能力上持平或者超过专门设计的时间序列训…

16 循环语句——for循环

#字符串是可以进行迭代的 for 循环: for 变量 in 可迭代的东西: 代码 把可迭代的东西中的每一项内容拿出来&#xff0c;挨个的赋值给变量&#xff0c;每一次的赋值都要执行一次循环体(代码) s "你好呀&#xff0c;我叫赛利…

K8s 不同层次的进程间通信实现

在 Kubernetes (K8s) 中&#xff0c;不同层次的进程间通信实现方式如下&#xff1a; 1. Pod 内进程间通信 Pod 是 Kubernetes 中的最小部署单元&#xff0c;通常包含一个或多个共享相同网络命名空间的容器。 方式&#xff1a; 使用 localhost 和容器暴露的端口进行通信。共享文…

PH热榜 | 2024-12-26

1. Tutor LMS 3.0 标语&#xff1a;一体化WordPress学习管理系统 介绍&#xff1a;Tutor LMS 3.0焕然一新&#xff0c;内置电商功能和AI工具&#xff0c;让用户可以轻松创建引人入胜的在线课程&#xff0c;管理订阅&#xff0c;并直接在平台上创收。 产品网站&#xff1a; 立…

有没有免费提取音频的软件?音频编辑软件介绍!

出于工作和生活娱乐等原因&#xff0c;有时候我们需要把音频单独提取出来&#xff08;比如歌曲伴奏、人声清唱等、乐器独奏等&#xff09;。要提取音频必须借助音频处理软件&#xff0c;那么有没有免费提取音频的软件呢&#xff1f;下面我们将为大家介绍几款免费软件&#xff0…

C++--------------树

探索 C 中的树结构&#xff1a;从基础到应用 在 C 编程的世界里&#xff0c;树结构是一种非常重要且强大的数据结构&#xff0c;它在许多领域都有着广泛的应用&#xff0c;从简单的数据存储到复杂的算法实现&#xff0c;树结构都展现出了独特的优势。今天&#xff0c;就让我们一…

Python PyMupdf 去除PDF文档中Watermark标识水印

通过PDF阅读或编辑工具&#xff0c;可在PDF中加入Watermark标识的PDF水印&#xff0c;如下图&#xff1a; 该类水印特点 这类型的水印&#xff0c;会在文件的字节流中出现/Watermark、EMC等标识&#xff0c;那么&#xff0c;我们可以通过改变文件字节内容&#xff0c;清理掉…

centos制作离线安装包

目录 1.yumdownloader与repotrack怎么选择&#xff1f; yumdownloader --resolve repotrack 总结 2.环境准备 3.安装 1.yumdownloader与repotrack怎么选择&#xff1f; yumdownloader --resolve 和 repotrack 都是与 YUM&#xff08;Yellowdog Updater Modified&#xf…

C++的内存四区

文章目录 内存四区1.程序运行前1.1 代码区2.1 全局区2.2 示例 2.程序运行后1.1 栈区1.2 堆区 内存四区 1.程序运行前 在程序编译后&#xff0c;生成了exe可执行程序&#xff0c;未执行该程序前分为两个区域。该区域的数据在程序结束后由操作系统释放. 1.1 代码区 ​存放 CPU …