C++使用sqlite3数据库

本文详细介绍了如何下载SQLite,如何生成sqlite3.lib文件,并在Visual Studio环境中进行配置。通过提供代码示例展示了如何在C++项目中简单使用SQLite,包括打开数据库连接并检查配置是否成功。此外,还提供了SQLite数据库内容的查看工具SQLiteExpert的下载链接。
摘要由CSDN通过智能技术生成
下载SQLite

官网地址:https://www.sqlite.org/download.html在这里插入图片描述
在这里插入图片描述

生成sqlite3.lib

将第二个文件,也就是sqlite-dll-win64-3350400文件解压到出来,得到

  • sqlite3.dll

  • sqlite3.def

在之前已经安装好的Microsoft Visual Studio 2019安装目录下找到link.exe链接执行文件及相应的动态库。本人目录(因为版本不同和安装路径不同,每人基本都不一样,最好自己点一点)是:

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\Hostx64\x64

把lib.exe、link.exe、mspdb140.dll、mspdbcore.dll、tbbmalloc.dll几个文件拷贝到解压出来的文件夹中,然后在文件夹的位置打开Windows PowerShell,输入命令:

.\lib.exe /MACHINE:X64 /DEF:sqlite3.def

即可生成sqlite3.lib和sqlite3.exp。

PS: 这里需要注意命令行中的X64表示目标平台是64位的,如果想要编写32位的程序则不能这么写。

简单使用SQLite

将下载的第一个文件解压出来,拿到里面的"sqlite3.h"文件扔到项目目录下,然后将"sqlite3.dll"也放到项目目录下,将生成的"sqlite3.lib"链接到项目中,即完成了配置。

运行如下代码可以看看是否配置成功:

#include <iostream>
#include "sqlite3.h"

int main()
{
    sqlite3* sql = NULL; //数据库指针
    std::string path = u8"./路网.mbtiles";//如果存在中文字符,需要在前面加个u8
    // 根据路径打开数据库连接。如果数据库不存在,则创建。
    int result = sqlite3_open(path.c_str(), &sql);
    if (result == SQLITE_OK) 
    {
        std::clog << "打开数据库连接成功";
    }
    else {
        std::clog << "打开数据库连接失败";
    }
    sqlite3_close(sql);
}
查看SQLite数据库内容

可以使用SQLiteExpert查看,下载地址在这:http://www.sqliteexpert.com/download.html

SQLite3是一个开源的轻量级关系型数据库管理系统,适用于嵌入式设备和移动平台。在C语言中,可以使用SQLite3 API来操作数据库,包括创建表、插入数据、查询数据、更新数据等操作。为了方便使用,可以将SQLite3数据库封装成一个C语言库,提供更简单的接口供应用程序调用。 以下是一个简单的SQLite3封装库示例: ```c #include <stdio.h> #include <string.h> #include <sqlite3.h> /* 封装SQLite3数据库操作 */ typedef struct { sqlite3* db; char* errmsg; } Sqlite3; /* 打开数据库 */ int sqlite3_open_db(Sqlite3* sqlite, const char* db_path) { int ret = sqlite3_open(db_path, &sqlite->db); if (ret != SQLITE_OK) { sqlite->errmsg = sqlite3_errmsg(sqlite->db); return -1; } return 0; } /* 关闭数据库 */ void sqlite3_close_db(Sqlite3* sqlite) { sqlite3_close(sqlite->db); } /* 执行SQL语句 */ int sqlite3_exec_sql(Sqlite3* sqlite, const char* sql) { int ret = sqlite3_exec(sqlite->db, sql, NULL, NULL, &sqlite->errmsg); if (ret != SQLITE_OK) { return -1; } return 0; } /* 查询数据 */ int sqlite3_query_data(Sqlite3* sqlite, const char* sql, int (*callback)(void*, int, char**, char**), void* data) { int ret = sqlite3_exec(sqlite->db, sql, callback, data, &sqlite->errmsg); if (ret != SQLITE_OK) { return -1; } return 0; } /* 示例:创建表 */ int sqlite3_create_table(Sqlite3* sqlite, const char* table_name, const char* fields) { char sql[256]; sprintf(sql, "CREATE TABLE IF NOT EXISTS %s (%s)", table_name, fields); return sqlite3_exec_sql(sqlite, sql); } /* 示例:插入数据 */ int sqlite3_insert_data(Sqlite3* sqlite, const char* table_name, const char* values) { char sql[256]; sprintf(sql, "INSERT INTO %s VALUES (%s)", table_name, values); return sqlite3_exec_sql(sqlite, sql); } /* 示例:查询数据 */ int sqlite3_query_data(Sqlite3* sqlite, const char* table_name) { char sql[256]; sprintf(sql, "SELECT * FROM %s", table_name); return sqlite3_query_data(sqlite, sql, callback, NULL); } /* 示例:回调函数 */ int callback(void* data, 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() { Sqlite3 sqlite; if (sqlite3_open_db(&sqlite, "test.db") != 0) { printf("Open database failed: %s\n", sqlite.errmsg); return -1; } if (sqlite3_create_table(&sqlite, "user", "id INT PRIMARY KEY, name TEXT, age INT") != 0) { printf("Create table failed: %s\n", sqlite.errmsg); sqlite3_close_db(&sqlite); return -1; } if (sqlite3_insert_data(&sqlite, "user", "1, 'Tom', 20") != 0) { printf("Insert data failed: %s\n", sqlite.errmsg); sqlite3_close_db(&sqlite); return -1; } if (sqlite3_query_data(&sqlite, "user") != 0) { printf("Query data failed: %s\n", sqlite.errmsg); sqlite3_close_db(&sqlite); return -1; } sqlite3_close_db(&sqlite); return 0; } ``` 以上代码演示了如何使用SQLite3 API封装一个简单的数据库操作库,其中包括打开数据库、关闭数据库、执行SQL语句、查询数据等操作,并提供了示例代码。在实际应用中,可以根据需要扩展更多的接口,以满足不同的业务需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值