sqlite3编译和使用

2023-11-07

前言

 SQLite 是一个 C 语言库,它实现了一个 小型、 快速、 自包含、 高可靠性、 功能齐全的SQL 数据库引擎。SQLite 是世界上使用最广泛的数据库引擎。SQLite 内置于所有手机和大多数计算机中,并捆绑在人们每天使用的无数其他应用程序中。 更多信息...

SQLite文件格式稳定、跨平台且向后兼容,开发人员承诺在 2050 年保持这种状态。SQLite 数据库文件通常用作在系统之间传输丰富内容的容器 [1] [2] [3] 和数据的长期存档格式 [4]。有超过 1 万亿 (1e12) 个 SQLite 数据库在使用中。SQLite源代码 位于公共领域,每个人都可以免费用于任何目的。

sqlite下载

sqlite3下载地址
(4)编译sqlite
首先,把SQLite编译成动态链接库:
打开Visual Studio 2019,新建一个名为sqlite3的Visual C++ Win32工程,在工程向导页中选择工程的类型为 “DLL”, 并且把创建为空项目的复选框钩上。通过工程—>添加现有项…,把单一文件sqlite3.c添加到工程中。为了生成在链接sqlite3.dll时需要用到的lib文件,需要在工程中添加模块定义文件。根据sqlite3.h中列出的导出函数名
然后,把sqlite3.def文件拷贝到sqlite3工程下
在这里插入图片描述
最后生成sqlite3.dll和sqlite3.lib在这里插入图片描述

添加模块定义文件
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
也可以在vs2019中建立一个空项目,编译
在这里插入图片描述
在编译lib时:报错
在这里插入图片描述
解决,可以看出,刚才在编译dll时,已经生成了pdb文件,这时候编译lib时,就产生了冲突,把debug下面的文件全部删除,即可编译成功
在这里插入图片描述

sqlite使用

使用vs2019创建空工程
在这里插入图片描述
在这里插入图片描述

#include <stdio.h>
#include "sqlite3.h"
//#pragma comment(lib, "sqlite3.lib")

/* print a record from table outputed by sql statement */
static int callback(void* NotUsed, int argc, char** argv, char** azColName) {
	int i;
	for (i = 0; i < argc; i++) {
		printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");

	}
	printf("\n");
	return 0;

}

int main(int argc, char** argv) {
	sqlite3* db;
	char* zErrMsg = 0;
	int rc;

	if (argc != 3) {
		fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
		return(1);

	}
	rc = sqlite3_open(argv[1], &db);  /* open database */
	if (rc) {
		fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
		sqlite3_close(db);
		return(1);

	}
	rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);  /* execute SQL statement */
	if (rc != SQLITE_OK) {
		fprintf(stderr, "SQL error: %s\n", zErrMsg);
		sqlite3_free(zErrMsg);

	}
	sqlite3_close(db);  /* close database */
	return 0;

}

工程源码下载

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sqlite3编译和使用 的相关文章

  • Android 中表与游标的并集

    我正在尝试将两个具有相同字段的表合并起来 通过内容提供程序 创建一个用于创建 ListView 的游标 Override public Cursor query Uri uri String projection String select
  • 有很多数据库视图可以吗?

    我很少 每月 每季度 使用 Microsoft SQL Server 2005 数据库视图生成数百份 Crystal Reports 报告 在我不读取这些视图的所有时间里 这些视图是否会浪费 CPU 周期和 RAM 因为我很少从视图中读取数
  • 无法使用 datastax java 驱动程序通过 UDT 密钥从 cassandra 检索

    我正在尝试使用用户定义的类型作为分区键将对象存储在 cassandra 中 我正在使用 datastax java 驱动程序进行对象映射 虽然我能够插入到数据库中 但无法检索该对象 如果我更改分区键以使用非 udt 例如文本 我就能够保存和
  • 如何记录数据库代码以查看数据库对象之间的依赖关系? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想为我的宠物项目编写文档 我的 PostgreSQL 数据库中有 30 个表 近 50 个视图和大约 30 个函数 存储过程 我想看
  • 将 Access 数据库转换为 SQL Microsoft DTS - 数据类型“130”不在映射文件中

    我正在尝试将大型 Access mdb 数据库导出到 SQL Server 数据库 但遇到了 Microsoft DTS 无法识别 Access 数据库中特定类型字段的数据类型的问题 我查看了相关的访问表 它们被设置为长度为 1 的 文本
  • 在数据库中存储密码的最佳方法[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Python 3 sqlite 参数化 SQL 查询

    我一直在尝试使用 Python 3 和 sqlite 模块进行参数化 SQL 查询 并且仅使用一个变量就成功了 但是 当使用两个变量时 我得到一个IndexError tuple index out of range错误 关于导致此错误的原
  • 如何实现 ALTER TABLE 的示例[重复]

    这个问题在这里已经有答案了 我已经多次问过这个问题 但尚未得到完整的答案 如何实现 ALTER TABLE 语句以向数据库添加列 有人可以给我举个例子吗 请阅读SQLite ALTER TABLE 参考 http sqlite org la
  • SQLite FTS4 使用特殊字符进行搜索

    我有一个 Android 应用程序 它使用 FTS4 虚拟表在 SQLite 数据库中搜索数据 它工作正常 但是当表中的数据包含特殊字符 如 或 时 SQLite MATCH 函数不会给出任何结果 我现在迷路了 谢谢 注意 默认的分词器真的
  • 如何确保与 sqlite 和 NFS 的文件安全同步

    我最近将应用程序的工作区文件格式转换为 sqlite 为了确保 NFS 上的稳健操作 我使用了通用更新策略 对本地硬盘上临时位置中存储的副本进行了所有修改 仅在保存时 我才会通过使用临时文件复制原始文件来修改原始文件 可能在 NFS 上 我
  • SQL Server 大小写/排序规则问题

    今天我在客户数据库中遇到了一个奇怪的情况 SQL Server 2005 数据库排序规则不区分大小写 因此我可以使用任何大小写编写 SQL 查询 没有任何问题 除了一个 一张特定表中的一个特定列称为 DeadZone 如果我这样查询 从表名
  • SQL Server 批量插入 - “批量加载数据转换错误”

    bulk insert dbo A FROM d AData csv WITH FIELDTERMINATOR ROWTERMINATOR n 将批量数据插入数据库时 在检查可疑数据后 我遇到了无法解释的错误 消息 4867 16 级 状态
  • 私人聊天系统MYSQL查询显示发送者/接收者的最后一条消息

    在这里我延伸一下我之前的问题 私人聊天系统MYSQL查询ORDERBY和GROUPBY https stackoverflow com questions 10929366 private chat system mysql query o
  • Qt:如何连接到 SQLite?

    我安装了 SQLite3 解压到 c sqlite 创建了一个数据库 c sqlite mzsales 现在我试图在 QTableView 中显示其内容 QSqlDatabase db QSqlDatabase addDatabase QS
  • 如何使用 SQL 通过表示多级订单的 varchar 字段正确排序?

    我不太喜欢数据库 我发现在查询上出现以下问题SQL服务器数据库旧的遗留应用程序的 我声明不幸的是我无法更改数据库结构 字段类型 这非常难看 我有以下情况 SELECT Sottocategoria IdSottocategoria IdCa
  • SQLite (Android):使用 ORDER BY 更新查询

    Android SQLite 我想要在 myTable 中的其他行之间插入行在android中使用SQLite 为此 我尝试增加从第 3 行开始的所有行的 id 这样 我就可以在位置 3 处插入新行 myTable 的主键是列 id 表中没
  • Android中不同线程的数据库访问

    我有一个在 AsyncTasks 中从互联网下载数据的服务 它解析数据并将其存储在数据库中 该服务持续运行 当服务写入数据库时 活动会尝试从数据库中读取更改 我有一个数据库助手 有多种写入和读取方法 这会导致问题吗 可能尝试从两个不同的线程
  • SQLite支持android的数据类型有哪些

    谁能告诉我 SQLITE 中支持 ANDROID 的数据类型列表 我想确认 TIME 和 DATE 数据类型 这里有一个list http www sqlite org datatype3 htmlSQLite 的数据类型 支持时间和日期间
  • Android:打开和关闭SQLite数据库

    我正在开发Android应用程序 我经常在其中访问本地数据库 该数据库可以从不同的主题访问 因此我遇到了数据库的协调问题 我使用以下open and close method public void open mDb mDbHelper g
  • sqlite3从打印数据中删除括号

    我创建了一个脚本 用于查找数据库第一行中的最后一个值 import sqlite3 global SerialNum conn sqlite3 connect MyFirstDB db conn text factory str c con

随机推荐

  • 《深入理解JAVA虚拟机》第三章

    垃圾收集机制 简称GC 比Java诞生的早 GC要完成的三件事 那些内存需要回收 什么时候回收 怎么回收 判断一个对象是否存活简单的方法 在对象中加入一个引用计数器 当一个地方引用它时 计数器值加一 当引用失效时 计数器值减一 当计数器值为
  • 2020自动化测试岗位需求的7项必备技能(更新版)

    随着敏捷和DevOps等新时代项目开发方法逐渐取代旧的瀑布模型 测试需求在业界不断增长 测试人员现在正在与开发人员一起工作 自动化测试在许多方面极大地取代了手动测试 如果您是自动化测试领域的新手 刚雇用您的组织将期望您快速 开箱即用 并能够
  • 配置你的代理服务器(Ubuntu)这样平常就不用开魔法了

    打开终端 在 Ubuntu 中 您可以按下 Ctrl Alt T 组合键来打开终端 编辑 etc environment 文件 在终端中 输入以下命令来编辑 etc environment 文件 sudo gedit etc environ
  • 算法导论——插入排序——伪代码和Java实现

    第二章第一节 插入排序 我们首先介绍插入排序 相信大部分人都打过扑克牌 许多人喜欢发一张牌就拿一张牌到手上 并且按顺序来放好牌 开始时我们左手为空 牌在桌子上 然后我们每次从桌子上拿走一张牌并将它插入左手中的位置 为了找到一张牌的正确位置
  • Learun,一款专注于业务,不用写代码的框架

    其实还是很因为懒 才会有这个项目框架的产生 每次开启一个终端的小服务都要整理一次框架造成重复的 不必要的 缺乏创造性的劳动 SO 本着可以用 用着简单的原则就设计了这套敏捷开发框架 希望有需要的朋友可以看看 关心自己的业务规则即可 Lear
  • 深度学习中的随机梯度下降(SGD)简介

    随机梯度下降 Stochastic Gradient Descent SGD 是梯度下降算法的一个扩展 机器学习中反复出现的一个问题是好的泛化需要大的训练集 但大的训练集的计算代价也更大 机器学习算法中的代价函数通常可以分解成每个样本的代价
  • Python - python如何连接sql server数据库

    一 安装第三方模块 首先要下载名为 pymssql 的模块 然后import该模块 安装方法 1 第一种方法 按win r gt 输入cmd gt 输入以下命令即可 pip install pymssql 2 第二种方法 打开pycharm
  • 软件知识分类法(兼谈收入这事儿)

    好久没来 以此文章清清杂草吧 眼下比较常用的软件知识归类法是以关键字为导向的 但感觉这种分类法挺误人子弟的 比如 编程语言与程序设计 软件工程及软件方法学 软件项目管理 软件需求 UML 建模 极限编程 软件方法 软件工程 面向对象 软件质
  • 基于微前端qiankun的多页签缓存方案实践

    本文梳理了基于阿里开源微前端框架qiankun 实现多页签及子应用缓存的方案 同时还类比了多个不同方案之间的区别及优劣势 为使用微前端进行多页签开发的同学 提供一些参考 一 多页签是什么 我们常见的浏览器多页签 编辑器多页签 从产品角度来说
  • Pytorch入门之RNN

    看了花书上的RNN和莫凡python关于RNN的实战演练 现在来总结一下 主要分5部分 1 LSTM实现MNIST数据集分类 2 RNN实现三角函数的回归问题 3 LSTM实现三角函数的回归问题 4 深度循环神经网络 5 RNN实现语言模型
  • 2021-03-24

    java Script介绍 什么是js JavaScript是一种基于对象和事件驱动的 并具有安全性能的脚本语言 已经被广泛用于Web应用开发 常用来为网页添加各式各样的动态功能 为用户提供更流畅美观的浏览效果 通常JavaScript脚本
  • 【2022第十三届蓝桥杯】c/c++ 大学c组 解题报告

    大家好 我是小单同学 欢迎交流指正 今天上午蓝桥杯圆满落幕 准备了几个月的比赛也终于打完了 今年填空题变成了两道 同学们反映今年难度上升很大 小单也感觉今年难度较大hh 空了两道题 现在给大家分享一下本菜鸡的解题报告 供大家交流 仅供参考哈
  • jvm优化(二)JVM 内存大小设置

    Tomcat本身不能直接在计算机上运行 需要依赖于硬件基础之上的操作系统和一个Java虚拟机 Tomcat的内存溢出本质就是JVM内存溢出 所以在本文开始时 应该先对Java JVM有关内存方面的知识进行详细介绍 一 Java JVM内存介
  • [Pytorch使用] cuda的使用

    原文 torch cuda里 记录着当前默认device torch device cuda 指代当前默认device with torch cuda device 1 这样的region 会设置当前默认device torch devic
  • 【零基础】学python数据结构与算法笔记15-欧几里得、RSA

    文章目录 前言 95 欧几里得算法 96 RSA算法介绍 97 RSA算法测试 98 算法课程总结 总结 前言 学习python数据结构与算法 学习常用的算法 b站学习链接 95 欧几里得算法 求最大公约数 欧几里得算法 gcd a b g
  • OpenWrt下使用docker安装icloudpd实现iPhone照片备份私有云盘nas

    文章目录 一 背景与需求 二 部署方法 2 1 我的环境 2 2 准备工作 2 2 1 检查docker环境是否运行正常 2 2 2 查询宿主系统用户id和组id 2 2 3 规划挂载目录 2 2 4 编写启动参数 2 2 5 解决Open
  • python+selenium 爬取微博(网页版)并解决账号密码登录、短信验证

    使用python selenium 爬取微博 前言 为什么爬网页版微博 为什么使用selenium 怎么模拟微博登录 一 事前准备 二 Selenium安装 关于selenium 安装步骤 三 selenium定位网页元素 基本方法 详细使
  • 启动Nginx出现Failed to start nginx.service:unit not found

    vi etc init d nginx 粘贴下面代码 bin sh nginx this script starts and stops the nginx daemin chkconfig 85 15 description Nginx
  • UE4信息交互-关卡蓝图内的交互

    笔记为 风之神韵 蓝图进阶教学视频中讲解的内容 整理笔记是为了便于学习和查询 UE4版本 4 8 1 一 事件调用函数的方式 1 gt 第一步 打开关卡蓝图 菜单Blueprints gt Open Level Blueprint 如图 2
  • sqlite3编译和使用

    前言 SQLite 是一个 C 语言库 它实现了一个 小型 快速 自包含 高可靠性 功能齐全的SQL 数据库引擎 SQLite 是世界上使用最广泛的数据库引擎 SQLite 内置于所有手机和大多数计算机中 并捆绑在人们每天使用的无数其他应用