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.mzph.cn/diannao/65172.shtml

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

相关文章

【MogDB】MogDB5.2.0重磅发布第十篇-支持PLSQL嵌套子程序

一、前言 在ORACLE的PLSQL中&#xff0c;支持在procedure、function及匿名块中&#xff0c;嵌套定义procedure和function,编写这样的代码&#xff0c;算是一种低耦合高内聚的风格。在openGauss 6.0及之前的版本&#xff0c;并不支持嵌套子程序&#xff08;预计7.0版本会支持&a…

文件上传绕过最新版安全狗

更多网安思路&#xff0c;可前往无问社区 http分块传输绕过 http分块传输⼀直是⼀个很经典的绕过⽅式&#xff0c;只是在近⼏年分块传输⼀直被卡的很死&#xff0c;很多waf都开始加 ⼊了检测功能&#xff0c;所以的话&#xff0c;分块传输这⾥也不是很好使&#xff0c;但是配…

深度学习论文: RemDet: Rethinking Efficient Model Design for UAV Object Detection

深度学习论文: RemDet: Rethinking Efficient Model Design for UAV Object Detection RemDet: Rethinking Efficient Model Design for UAV Object Detection PDF:https://arxiv.org/abs/2412.10040 PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代码: …

详细讲解axios封装与api接口封装管理

一、axios封装 axios是基于promise的http客户端&#xff0c;用于浏览器和nodejs发送http请求 &#xff0c;对它进行封装主要是为了统一管理请求配置和处理请求和响应的通用逻辑等。以下是常用的封装逻辑和要点 1&#xff1a;引入axios相关依赖 首先引用项目中的axios库&…

搭建Elastic search群集

一、实验环境 二、实验步骤 Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎Elasticsearch目录文件&#xff1a; /etc/elasticsearch/elasticsearch.yml#配置文件 /etc/elasticsearch/jvm.options#java虚拟机 /etc/init.d/elasticsearch#服务启动脚本 /e…

正点原子串口例程解读

首先是串口初始化&#xff0c;这里初始化的是usart3 void esp8266_init(void) {huart_wifi.InstanceESP8266; //uart3huart_wifi.Init.BaudRate115200; // 设置波特率为115200huart_wifi.Init.WordLengthUART_WORDLENGTH_8B; // 设置数据位长度为8位huart_wifi.Init.StopBi…

Flink SQL 支持 kafka 开启 kerberos 权限控制.

一. 背景. 最近在验证kafka 开启kerberos的情况下, flink任务的支持情况. 但是验证的时候发现一个互斥的情况. 在读取数据的时候, 在开启kafka gruop id的权限控制的时候, flink sql 即使设置了gruop id , 竟然还能读取数据. 这个和预期不符. 所以才较真验证了一下. 二. kafk…

KVM虚拟机管理脚本

思路&#xff1a; 在/opt/kvm下创建一个磁盘文件&#xff0c;做差异镜像&#xff0c;创建一个虚拟机配置文件&#xff0c;做虚拟机模版 [rootnode01 ~]# ls /opt/kvm/ vm_base.qcow2 vm_base.xml创建虚拟机的步骤&#xff1a;首先创建虚拟机的差异镜像&#xff0c;然后复制虚…

Null value was assigned to a property of primitive type setter of 的原因与解决方案

Null value was assigned to a property of primitive type setter of 的原因与解决方案 org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of com.xxx.xxx.DealerUser.dealerId数据库表结构 实体类 当数据库的dealer…

latex常见问题汇总

文章目录 单行多图显示双栏插入图片 单行多图显示 \begin{figure}[t!] % case 1\centering\setlength{\tabcolsep}{0.5pt} % 图片之间的距离为0.5 point\begin{tabular}{ccc}\includegraphics[width0.30\linewidth, height0.33\linewidth]{pic/xuLun/thin.png} &\includeg…

读取百度api存入csv

读取百度api存入csv 1、将获取到的json数据映射Java实体类如下 所用的依赖 <!-- Jackson--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.14.2</ver…

【数据结构与算法】排序算法(下)——计数排序与排序总结

写在前面 书接上文&#xff1a;【数据结构与算法】排序算法(中)——交换排序之快速排序 文章主要讲解计数排序的细节与分析源码。之后进行四大排序的总结。 文章目录 写在前面一、计数排序(非比较排序)代码的实现&#xff1a; 二、排序总结 2.1、稳定性 3.2、排序算法复杂度及…

2034 C. Trapped in the Witch‘s Labyrinth

题意 一个矩阵&#xff0c;每个元素标有方向&#xff0c;人可以从任意一个位置出发&#xff0c;如果该位置永远走不到边缘&#xff0c;则被认为被困住了&#xff0c;统计这种位置的个数。 矩阵有?&#xff0c;其能代表某一种方向。 比如 3 3 ?U? R?L RDL答案是5 解决方…

Multi移动端开发

Multi移动端开发 安装环境 安装功能 VS2022安装 【ASP.NET和Web开发】、【.NET Multi-platform App UI开发】、【.NET桌面开发】 配置程序源 【工具】–>【选项】–>【NuGet包管理器】–>【程序包源】&#xff0c;添加如下&#xff1a; 名称&#xff1a;MES_APP 源&…

若依plus apifox导入接口显示为空

项目已经正常启动 访问接口有些没问题&#xff0c;有些有问题 其他模块都可以正常导入 解决&#xff1a;

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

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

英文学术会议海报poster模板【可编辑】

英文学术会议海报poster模板【可编辑】 下载链接&#xff1a;学术会议海报poster模板【可编辑】 横版海报 竖版海报 下载链接&#xff1a;学术会议海报poster模板【可编辑】 提供了一套学术海报的PPT模板&#xff0c;适用于学术会议、研讨会等场合。 竖版&#xff0c;包含11…

Ubuntu 20.04 安装 LNMP

1. 更新系统 sudo apt update sudo apt upgrade2. 安装 Nginx sudo apt install nginx3. 安装 MariaDB (作为 MySQL 的替代) sudo apt install mariadb-server mariadb-client初始化 MariaDB 数据库&#xff08;可选&#xff09; sudo mysql_secure_installation4. 安装 PH…

机器学习之KNN算法预测数据和数据可视化

机器学习及KNN算法 目录 机器学习及KNN算法机器学习基本概念概念理解步骤为什么要学习机器学习需要准备的库 KNN算法概念算法导入常用距离公式算法优缺点优点&#xff1a;缺点︰ 数据可视化二维界面三维界面 KNeighborsClassifier 和KNeighborsRegressor理解查看KNeighborsRegr…

【VSCode】工作区及设置

【VSCode】工作区及设置 VSCode介绍工作区设置 VSCode介绍 Visual Studio Code&#xff08;简称VSCode&#xff09;是一个由微软开发的免费、开源的代码编辑器&#xff0c;以下是VSCode的一些功能及特性&#xff1a; 编辑器核心&#xff1a; 多文档界面&#xff1a;VSCode允许…