前言
SQLite 是一个 C 语言库,它实现了一个 小型、 快速、 自包含、 高可靠性、 功能齐全的SQL 数据库引擎。SQLite 是世界上使用最广泛的数据库引擎。SQLite 内置于所有手机和大多数计算机中,并捆绑在人们每天使用的无数其他应用程序中。 更多信息...
SQLite文件格式稳定、跨平台且向后兼容,开发人员承诺在 2050 年保持这种状态。SQLite 数据库文件通常用作在系统之间传输丰富内容的容器 [1] [2] [3] 和数据的长期存档格式 [4]。有超过 1 万亿 (1e12) 个 SQLite 数据库在使用中。SQLite源代码 位于公共领域,每个人都可以免费用于任何目的。
sqlite下载
sqlite3下载地址 (4)编译sqlite
首先,把SQLite编译成动态链接库:
打开Visual Studio 2019,新建一个名为sqlite3的Visual C++ Win32工程,在工程向导页中选择工程的类型为 “DLL”, 并且把创建为空项目的复选框钩上。通过工程—>添加现有项…,把单一文件sqlite3.c添加到工程中。为了生成在链接sqlite3.dll时需要用到的lib文件,需要在工程中添加模块定义文件。根据sqlite3.h中列出的导出函数名
然后,把sqlite3.def文件拷贝到sqlite3工程下
最后生成sqlite3.dll和sqlite3.lib
添加模块定义文件
也可以在vs2019中建立一个空项目,编译
在编译lib时:报错
解决,可以看出,刚才在编译dll时,已经生成了pdb文件,这时候编译lib时,就产生了冲突,把debug下面的文件全部删除,即可编译成功
sqlite使用
使用vs2019创建空工程
//#pragma comment(lib, "sqlite3.lib")
/* print a record from table outputed by sql statement */
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(int argc, char** argv) {
sqlite3* db;
char* zErrMsg = 0;
int rc;
if (argc != 3) {
fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
return(1);
}
rc = sqlite3_open(argv[1], &db); /* open database */
if (rc) {
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return(1);
}
rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg); /* execute SQL statement */
if (rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
sqlite3_close(db); /* close database */
return 0;
}
工程源码下载