【C++拓展】vs2022使用SQlite3

文章目录


前言

SQLite3 是一种广泛应用的嵌入式数据库,以其轻量、高效和无服务器架构闻名。Visual Studio 2022(VS2022)作为一款强大的 IDE,提供了丰富的工具支持 C++ 开发。在 VS2022 中使用 SQLite3,可以帮助开发者快速集成数据库功能,并实现高效的数据管理。本文将介绍如何在 VS2022 中使用 SQLite3 的关键步骤和注意事项,为开发者提供入门指引。


下载所需要的文件

SQLite

首先需要下载源文件:

然后下载动态库:


然后把他们放到一起,如上

生成lib库

win 输入dev打开vs的命令行

cd进入刚刚的文件夹

输入:lib /MACHINE:X64 /DEF:sqlite3.def


最后生成lib

vs2022中使用SQlite

打开项目属性,VC++目录,把你刚刚的路径填进去:

然后打开输入,把sqlite3.lib填进去

示例代码

cpp 复制代码
#include <iostream>
#include <sqlite3.h> // SQLite3 的头文件

// 打开数据库的回调函数
static int callback(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;
}

int main() {
    sqlite3* db; // 数据库连接指针
    char* errMsg = nullptr;
    int rc;

    // 打开或创建数据库
    rc = sqlite3_open("example.db", &db);
    if (rc) {
        std::cerr << "无法打开数据库: " << sqlite3_errmsg(db) << std::endl;
        return rc;
    }
    else {
        std::cout << "成功打开数据库!" << std::endl;
    }

    // 创建表
    const char* createTableSQL =
        "CREATE TABLE IF NOT EXISTS Users("
        "ID INTEGER PRIMARY KEY AUTOINCREMENT, "
        "Name TEXT NOT NULL, "
        "Age INTEGER NOT NULL);";
    rc = sqlite3_exec(db, createTableSQL, nullptr, nullptr, &errMsg);
    if (rc != SQLITE_OK) {
        std::cerr << "创建表失败: " << errMsg << std::endl;
        sqlite3_free(errMsg);
    }
    else {
        std::cout << "表创建成功!" << std::endl;
    }

    // 插入数据
    const char* insertSQL =
        "INSERT INTO Users (Name, Age) VALUES ('Alice', 25), ('Bob', 30);";
    rc = sqlite3_exec(db, insertSQL, nullptr, nullptr, &errMsg);
    if (rc != SQLITE_OK) {
        std::cerr << "插入数据失败: " << errMsg << std::endl;
        sqlite3_free(errMsg);
    }
    else {
        std::cout << "数据插入成功!" << std::endl;
    }

    // 查询数据
    const char* querySQL = "SELECT * FROM Users;";
    rc = sqlite3_exec(db, querySQL, callback, nullptr, &errMsg);
    if (rc != SQLITE_OK) {
        std::cerr << "查询数据失败: " << errMsg << std::endl;
        sqlite3_free(errMsg);
    }
    else {
        std::cout << "数据查询成功!" << std::endl;
    }

    // 关闭数据库
    sqlite3_close(db);
    std::cout << "数据库已关闭。" << std::endl;

    return 0;
}


如果提示确实dll,则需要:



总结

在 VS2022 中使用 SQLite3 是实现轻量级数据库存储的高效解决方案。通过配置 SQLite3 库、连接数据库和编写 SQL 操作代码,可以快速搭建起基于 SQLite3 的数据管理功能。对于嵌入式系统、桌面应用和小型项目,SQLite3 是一个理想的选择。然而,在使用过程中,需要注意事务处理和多线程访问等细节,以确保数据一致性和安全性。通过掌握这些知识,开发者能够更好地利用 SQLite3 和 VS2022 构建高质量的应用程序。

相关推荐
Gauss松鼠会17 小时前
【GaussDB】基于SpringBoot实现操作GaussDB(DWS)的项目实战
java·数据库·经验分享·spring boot·后端·sql·gaussdb
難釋懷17 小时前
Redis内存回收-内存淘汰策略
前端·数据库·redis
一只fish17 小时前
Oracle官方文档翻译《Database Concepts 26ai》第7章-数据完整性
数据库·oracle
Gauss松鼠会17 小时前
【GaussDB】GaussDB 常见问题及解决方案汇总
java·数据库·算法·性能优化·gaussdb·经验总结
云边云科技_云网融合17 小时前
云边云全栈 SD-WAN/SASE 运维服务:构建企业数字网络的坚实后盾
数据库·人工智能·云计算
Brilliantwxx17 小时前
【C++】深度剖析 · 继承 (虚基表+虚函数表)
开发语言·c++
砍材农夫17 小时前
物联网 基于netty构建mqtt协议规范(发布/订阅模式)
java·开发语言·物联网·netty
techdashen17 小时前
Rust 泛型 vs Java 泛型:它们看起来相似,但骨子里截然不同
java·开发语言·rust
一只旭宝17 小时前
【C加加入门精讲15】:IO流缓冲区、字符串流、缓冲流及STL vector容器零基础实战教程一、博客前言
开发语言·c++
alwaysrun17 小时前
C++之高性能跨平台日志库spdlog
c++·后端·编程语言