当前位置: 首页 > news >正文

C++ 使用 SQLite3 数据库

文章目录

    • 安装 SQLite3
    • 配置 CMakes
    • 使用 SQLite3
    • 参考

本文档介绍如何在 C++ 项目中使用 SQLite3 数据库,假设通过 vcpkg 安装了 SQLite3。因本机为Windows环境,为方便,用了本机的Visual Studio 2022 创建cmake项目。

安装 SQLite3

首先,确保你已经通过 vcpkg 安装了 SQLite3。可以使用以下命令进行安装:

vcpkg install sqlite3

vcpkg 安装sqlite3

配置 CMakes

在 CMakeLists.txt 文件中,添加以下内容以找到并链接 SQLite3:

find_package(SQLite3 REQUIRED)target_link_libraries(your_target PRIVATE SQLite::SQLite3)

实际上,由于我用了Visual Studio 2022,我的cmake项目结构如下:
项目结构

use-sqlite3目录下的CMakeLists.txt文件我修改如下:

# CMakeList.txt: use-sqlite3 的 CMake 项目,在此处包括源代码并定义
# 项目特定的逻辑。
#
SET(CMAKE_TOOLCHAIN_FILE "D:/tools/vcpkg/scripts/buildsystems/vcpkg.cmake")
include("D:/tools/vcpkg/scripts/buildsystems/vcpkg.cmake")
if(DEFINED ENV{VCPKG_DEFAULT_TRIPLET} AND NOT DEFINED VCPKG_TARGET_TRIPLET)set(VCPKG_TARGET_TRIPLET "$ENV{VCPKG_DEFAULT_TRIPLET}" CACHE STRING "" FORCE)
endif()
# 将源代码添加到此项目的可执行文件。
add_executable (use-sqlite3 "use-sqlite3.cpp" "use-sqlite3.h")if (CMAKE_VERSION VERSION_GREATER 3.12)set_property(TARGET use-sqlite3 PROPERTY CXX_STANDARD 20)
endif()# TODO: 如有需要,请添加测试并安装目标。find_package(SQLite3 REQUIRED)target_link_libraries(use-sqlite3 PRIVATE SQLite::SQLite3)

使用 SQLite3

在你的 C++ 代码中,可以包含 SQLite3 的头文件并开始使用它:

// 示例代码// use-sqlite3.cpp: 定义应用程序的入口点。
//#include "use-sqlite3.h"
#include "sqlite3.h"using namespace std;int main()
{sqlite3* db;char* zErrMsg = 0;int rc;// 打开数据库rc = sqlite3_open("example.db", &db);if (rc) {std::cerr << "Can't open database: " << sqlite3_errmsg(db) << std::endl;return(0);}else {std::cout << "Opened database successfully" << std::endl;}// 创建表const char* sqlCreateTable = "CREATE TABLE IF NOT EXISTS test( ""id INTEGER PRIMARY KEY, ""name TEXT NOT NULL);";rc = sqlite3_exec(db, sqlCreateTable, 0, 0, &zErrMsg);if (rc != SQLITE_OK) {std::cerr << "SQL error: " << zErrMsg << std::endl;sqlite3_free(zErrMsg);}else {std::cout << "Table created successfully" << std::endl;}// 插入数据const char* sqlInsert = "INSERT INTO test(name) VALUES ('Alice');";rc = sqlite3_exec(db, sqlInsert, 0, 0, &zErrMsg);if (rc != SQLITE_OK) {std::cerr << "SQL error: " << zErrMsg << std::endl;sqlite3_free(zErrMsg);}else {std::cout << "Records created successfully" << std::endl;}const char* sqlUpdate = "UPDATE test SET name = 'Bob' WHERE id = 2;";rc = sqlite3_exec(db, sqlUpdate, 0, 0, &zErrMsg);if (rc != SQLITE_OK) {std::cerr << "SQL error: " << zErrMsg << std::endl;sqlite3_free(zErrMsg);}else {std::cout << "Record updated successfully" << std::endl;}// 查询数据const char* sqlSelect = "SELECT * FROM test;";rc = sqlite3_exec(db, sqlSelect, [](void* NotUsed, 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 << std::endl;return 0;}, 0, &zErrMsg);if (rc != SQLITE_OK) {std::cerr << "SQL error: " << zErrMsg << std::endl;sqlite3_free(zErrMsg);}else {std::cout << "Operation done successfully" << std::endl;}// 关闭数据库sqlite3_close(db);std::cout << "Database closed successfully" << std::endl;return 0;
}

运行效果如下:

运行效果截屏

参考

  • SQLite3 官方文档
  • vcpkg 文档
http://www.dtcms.com/a/561799.html

相关文章:

  • 郑州做网站的专业公司有哪些导购网站自己做电商
  • 松江品划网站建设推广美食网站建设策划书范文
  • 网站建设 全包 模板安徽省建设干部学校网站关停
  • 从空间几何到地球重量——张祥前质量定义方程的实证推导
  • 做网站有什么注意事项新手怎样做网络营销推广
  • 网站账户上的余额分录怎么做做网站的目的是什么
  • Wan-AI/Wan2.2-Animate-14B
  • 杂记 17
  • 国际营销网站建设新型实体企业100强
  • 载带 东莞网站建设英文网站搜索
  • 【Java】关于mybatis动态拼接SQL实现动态查询时遇到的一些问题
  • 做电影网站会违法吗网站模块怎么恢复
  • 网站程上传服务商类型是什么意思
  • 3.基础--数据模型
  • 设计logo网站生成器个人电脑做网站服务器网站
  • 49.渗透-Yakit-基础模块应用(爆破与未授权检测)
  • Taro 开发快速入门手册
  • html5网络公司网站模板wordpress 左右翻页
  • Python GUI 编程(Tkinter)
  • 外贸商业网站建设重庆专业的网站建设公司
  • 做怎么样的网站好wordpress 技术类主题
  • Java 大视界 -- Java 大数据在智能政务公共资源交易数据分析与监管中的应用
  • 雅思口语主题
  • 江门网站江苏建设厅长
  • 多模态数据湖对接 AI 训练的技术方案
  • 计算机组成原理核心知识点梳理
  • 天津手机网站建设制作省级别网站建设方案
  • 家政服务网站建设方案宁波网站建设就业方向
  • 网站程序的设计费用网站添加wordpress博客
  • 第三方接口请求