一、下载源代码
sqlite-amalgamation-3370200.zip
二、编写调用代码
这段代码其实是官网的案例,我这里稍作了改动。
#include <stdio.h>
#include <sqlite3.h>
//#pragma comment(lib, "sqlite3.lib")
// 这个是回调函数,查询成功一行就会调用一次
// argc查询了多少个列, azColName 查询的列名;argv 查询的列的值
static int callback(void* NotUsed, 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* db; //先创建数据库对象指针
char* zErrMsg = 0;
int rc;
int argc = 3;
// 3个参数,第一个数据库名,第二个数据库目录,第三个要执行的sql
char argv[3][500] = { "lua.pkg",
"D:/Progame Code/sqlite3/db/lua.pkg",
"create table `calldb2`(ID int unsigned NOT NULL default 0,name varchar(20));"\
"insert into calldb2 (name)values(\"lyh001\");"\
"insert into calldb2 (name)values(\"lyh002\")"};
if (argc != 3) {
fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
return(1);
}
rc = sqlite3_open(argv[1], &db); // 打开数据库
if (rc) {
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return(1);
}
// char sql[100] = "select * from calldb2";
// 执行多条sql
//参数含义:数据库指针,sql命令,回调函数,回调函数参数,错误信息
rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
if (rc != SQLITE_OK) { // 执行不成功,报错
fprintf(stderr, "SQL retCode:%d, error: %s\n", rc, zErrMsg);
sqlite3_free(zErrMsg);
}
sqlite3_close(db); // 有打开就有关闭
return 0;
}