SQLite生成c++可调用的dll,lib

一、下载文件

下载链接https://www.sqlite.org/download.html
打开链接,下载sqlite-amalgamation-3420000.zip和sqlite-dll-win64-x64-3420000.zip
在这里插入图片描述
下载后解压,把解压后的文件放在同一个文件夹里,通过软件EveryThing,找到电脑里的lib.exe、link.exe、mspdb140.dll(不同版本的vs这个dll的数字会有所不同)、tbbmalloc.dll,这些文件复制到刚刚的文件夹中,比如路径为D:/test的文件夹
在这里插入图片描述
在路径上输入cmd,
在界面输入LIB /out:D:\test\sqlite3.lib /MACHINE:IX64 /DEF:D:\test\sqlite3.def 敲击回车即可
注意文件夹的粘过来的每一个文件是x32,x64,x86,版本要统一!
在这里插入图片描述
这里也需要修改

在这里插入图片描述

二、代码使用

sqlite3* pDB;
char* errMsg;

// 打开SQLite数据库、如果不存在就会创建一个
int res = sqlite3_open("数据库名字.db", &pDB);
if (res != SQLITE_OK) {
	printf("Can't open database: %s\n", sqlite3_errmsg(pDB));
	sqlite3_close(pDB);
	return -1;
}

// 创建表
std::string strSQL = "create table 你的表名 (id int, 字段名 数据类型);";
res = sqlite3_exec(pDB, strSQL.c_str(), 0, 0, &errMsg);
if (res != SQLITE_OK)
{
    printf("Create table error: %s\n", errMsg);
}

// 插入数据
res = sqlite3_exec(pDB, "begin transaction;", 0, 0, &errMsg);
for (int i = 0; i < 要插入的数据数组.size(); ++i)
{
    char sql[512];
    
    //插入内容一定要写成UTF-8的格式
    sprintf_s(sql, "insert into 你的表名 values(%d, %s);", 要插入的数据1, 要插入的数据2);

    res = sqlite3_exec(pDB, sql, 0, 0, &errMsg);
    if (res != SQLITE_OK)
    {
        printf("Insert error: %s\n", errMsg);
        return -1;
    }
}
res = sqlite3_exec(pDB, "commit transaction;", 0, 0, &errMsg);

//查询数据
std::string strSQL1 = "select * from 你的表名";
res = sqlite3_exec(pDB, strSQL1.c_str(), SelectCallback, 0, &errMsg);
if (res != SQLITE_OK)
{
    printf("Select error: %s\n", errMsg);
    return -1;
}

// 关闭数据库
sqlite3_close(pDB);

//遍历的函数
static int SelectCallback(void* notUsed, int argc, char** argv, char** azColName)
{
    for (int i = 0; i < argc; i++)
    {
        //printf("%s = %s", azColName[i], (argv[i] ? argv[i] : "NULL"));
        qDebug() << QString::fromUtf8(azColName[i]) << "=" << QString::fromUtf8(argv[i]);
        if (i != argc - 1)
        {
            printf(", ");
        }
    }
    printf("\n");
    return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值