在C++项目中使用SQLite3可实现轻量级本地数据存储,适用于桌面应用与嵌入式系统。1. 通过包管理器或官网下载安装SQLite3开发文件,包含sqlite3.h并链接库文件完成编译配置。2. 使用sqlite3_open()打开数据库连接,若文件不存在则自动创建,操作完成后调用sqlite3_close()关闭连接。3. 利用sqlite3_exec()执行SQL语句建表、插入数据,支持标准DDL与DML操作,如CREATE TABLE和INSERT,并通过返回码判断执行是否成功。

在C++项目中使用SQLite3进行本地数据存储是一种轻量、高效且无需独立数据库服务器的解决方案,特别适合桌面应用、嵌入式系统或需要离线存储的场景。SQLite3是一个C语言库,因此可以直接被C++调用,使用简单,集成方便。
大多数Linux发行版自带SQLite3开发库,可通过包管理器安装:
# Ubuntu/Debian sudo apt-get install libsqlite3-dev <h1>CentOS/RHEL</h1><p>sudo yum install sqlite-devel</p>
Windows用户可从SQLite官网下载预编译的DLL和头文件,或使用vcpkg、MinGW等工具链集成。
在项目中包含以下两个关键文件:
编译时需链接SQLite3库:
g++ main.cpp -lsqlite3 -o app使用 sqlite3_open() 打开一个数据库文件,若文件不存在则自动创建:
PHP的使用技巧集
PHP 独特的语法混合了 C、J*a、Perl 以及 PHP 自创新的语法。它可以比 CGI或者Perl更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多。下面介绍了十个PHP高级应用技巧。 1, 使用 ip2long() 和 long2ip() 函数来把 IP 地址转化成整型存储到数据库里
440
查看详情
#include "sqlite3.h"
#include <iostream>
<p>sqlite3* db;
int rc = sqlite3_open("example.db", &db);</p><p>if (rc) {
std::cerr << "无法打开数据库: " << sqlite3_errmsg(db) << std::endl;
return 1;
}
std::cout << "数据库打开成功" << std::endl;</p><p>// 使用完毕后关闭
sqlite3_close(db);</p>
使用 sqlite3_exec() 可直接执行DDL和DML语句:
const char* sql = R"(
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER
);)";
<p>rc = sqlite3_exec(db, sql, nullptr, nullptr, nullptr);
if (rc != SQLITE_OK) {
std::cerr << "建表失败: " << sqlite3_errmsg(db) << std::endl;
}</p>
插入数据示例:
sql = "INSERT INTO users (name, age) VALUES ('Alice', 25);";
rc = sqlite3_exec(db, sql, nullptr, nullptr, nullptr);
if (rc != SQLITE_OK) {
std::cerr << "插入失败: " << sqlite3_errmsg(db) << std::endl;
}
通过回调函数接收查询结果:
static int callback(void* data, int argc, char** argv, char** azColName) {
for (int i = 0; i < argc; ++i) {
std::cout << azColName[i] << " = " << (argv[i] ? argv[i] : "NULL") << std::endl;
}
std::cout << "--------\n";
return 0;
}
<p>sql = "SELECT * FROM users;";
rc = sqlite3_exec(db, sql, callback, nullptr, nullptr);
if (rc != SQLITE_OK) {
std::cerr << "查询失败: " << sqlite3_errmsg(db) << std::endl;
}</p>
对于频繁执行或带用户输入的SQL,应使用预编译语句防止SQL注入并提升性能:
sqlite3_stmt* stmt;
const char* insert_sql = "INSERT INTO users (name, age) VALUES (?, ?);";
<p>rc = sqlite3_prepare_v2(db, insert_sql, -1, &stmt, nullptr);
if (rc == SQLITE_OK) {
sqlite3_bind_text(stmt, 1, "Bob", -1, SQLITE_STATIC);
sqlite3_bind_int(stmt, 2, 30);</p><pre class='brush:php;toolbar:false;'>if (sqlite3_step(stmt) != SQLITE_DONE) {
std::cerr << "执行失败: " << sqlite3_errmsg(db) << std::endl;
}
} sqlite3_finalize(stmt);
查询也可使用预编译方式逐行读取:
const char* select_sql = "SELECT id, name, age FROM users WHERE age > ?;";
rc = sqlite3_prepare_v2(db, select_sql, -1, &stmt, nullptr);
<p>if (rc == SQLITE_OK) {
sqlite3_bind_int(stmt, 1, 20);
while (sqlite3_step(stmt) == SQLITE_ROW) {
int id = sqlite3_column_int(stmt, 0);
const unsigned char* name = sqlite3_column_text(stmt, 1);
int age = sqlite3_column_int(stmt, 2);
std::cout << "ID: " << id << ", 名字: " << name << ", 年龄: " << age << std::endl;
}
}
sqlite3_finalize(stmt);</p>
基本上就这些。C++结合SQLite3实现本地数据存储非常实用,尤其在没有复杂并发需求的场景下。掌握打开数据库、执行语句、使用回调和预编译语句这四个核心环节,就能完成绝大多数嵌入式数据库编程任务。不复杂但容易忽略的是错误检查和资源释放,务必每次调用后判断返回值,并及时调用 finalize 和 close。
以上就是c++++如何使用SQLite3进行本地数据存储_c++嵌入式数据库编程的详细内容,更多请关注其它相关文章!
# 如何使用
# seo新人培训广州seo专
# 河南seo查询怎么操作
# 广告海报案例网站推广
# 免费推广发帖网站是什么
# 银川网站建设机构名单
# 无锡营销推广客服人员
# 绍兴seo效果分析
# 专业的网站建设服务
# 昆明做网站建设思路
# 东莞短视频seo关键词排名优化
# 的是
# 如何实现
# 官网
# 管理器
# 不存在
# linux
# 嵌入式系统
# 使用技巧
# 回调
# 数据存储
# stream
# win
# ios
# c++
# ai
# 工具
# ubuntu
# app
# c语言
# windows
# centos
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
《美篇》取消会员自动续费方法
Bootstrap 5导航栏折叠功能失效:数据属性迁移指南
抖音号显示企业机构号是什么意思?企业机构号申请条件是什么?
如何在CSS中使用过渡制作按钮边框渐变_border-color transition实现
iPhone17Pro如何连接蓝牙耳机_iPhone17Pro蓝牙设备配对与连接方法介绍
C++ priority_queue怎么用_C++优先队列底层实现与自定义比较器
vivo云服务一直提示空间不足怎么办 怎么办vivo云服务老是提示空间不足
顺丰速运官网查询入口 顺丰物流查询官网入口链接
小米手机截图后如何查看历史_小米手机截图历史记录查看方法
百度竞价WAP显示PC链接问题
如何取消数字签名
苹果官网国补入口在哪
如何在mysql中使用索引提示_mysql索引提示优化方法
AO3中文版手机快速通道_AO3最新稳定链接更新
电脑开不了机怎么办 电脑无法开机的解决方法
《oppo商城》维修服务位置
PPT页面尺寸怎么修改 PPT自定义幻灯片大小与方向设置【教程】
小米倒班助手添加日历提醒
sf漫画官网登录入口直达_sf漫画官方正版网址
Flash AS3.0简易相册制作
高德地图怎么查看未来行程规划_高德地图未来行程规划查看方法
C++ cast类型转换总结_C++ reinterpret_cast与const_cast的使用
《荔枝fm》导出文件教程
使用CSS :has() 选择器实现父元素样式控制:从子元素反向应用样式
iSpring三分屏制作教程
Yandex浏览器官方入口_Yandex搜索引擎中文版
《原神》月之一版本新增书籍一览
作业帮网页版不用下载入口 在线问老师快速答疑
口腔诊所管理软件推荐
Animex动漫社社登录官网 Animex动漫社资源社入口直达
支付宝登录刷脸不是本人如何解决
抖音怎么解除第三方绑定_抖音解除第三方平台绑定方法介绍
《饿了么》拼好饭点外卖教程2025
Win10通知横幅停留时间修改 Win10自定义通知显示时长【技巧】
《合金装备4》有望推出重制版!制作人发话了
火柴人战争网页版在线玩
J*aScript包管理器_Npm与Yarn对比
MySQL多重JOIN技巧:高效关联同一表获取多角色信息
海外搜索引擎推广效果怎么样,怎么分析效果!
个人所得税办理入口 个人所得税综合所得年度汇算入口
Go Template中优雅处理循环最后一项:自定义函数实践
《波斯王子:失落的王冠》剑术大师打法攻略
Mac怎么关闭按键声音_Mac键盘打字音效设置
《盗墓笔记手游》技能介绍
Flexbox布局实践:实现底部页脚与顶部粘性导航条的完美结合
谷歌邮箱官方入口链接 谷歌邮箱网页版电脑端快速登录
iPhone 15 Pro如何查看存储空间占用_iPhone 15 Pro存储空间查看教程
苹果电脑如何快速查看电池状态 苹果电脑电池信息快捷方法
使用jQuery精确检测除指定元素外任意位置的点击事件
抖音号升级企业号怎么改名字?升级企业号有哪些好处?
2025-12-05
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。