一、下载文件
下载链接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;
}