当前位置: 代码网 > it编程>数据库>MsSqlserver > 在C++项目中使用SQLite3数据库的全过程

在C++项目中使用SQLite3数据库的全过程

2025年11月03日 MsSqlserver 我要评论
安装 sqlite3首先,确保你已经通过 vcpkg 安装了 sqlite3。可以使用以下命令进行安装:vcpkg install sqlite3配置 cmakes在 cmakelists.txt 文

安装 sqlite3

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

vcpkg install 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;
}

运行效果如下:

到此这篇关于在c++项目中使用sqlite3数据库的全过程的文章就介绍到这了,更多相关c++使用sqlite3数据库内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com