sqlite学习笔记7:C语言中使用sqlite之打开数据库
发布时间:2020-12-12 19:58:06 所属栏目:百科 来源:网络整理
导读:数据库的基本内容前面都已经说得差不多了,接下看看怎样在C语言中使用sqlite。 一 接口 sqlite3_open(const char *filename,sqlite3 **ppDb) 打开数据库,如果数据库不存在则新建一个数据库,并打开 sqlite3_close(sqlite3*) 关闭数据库,如果关闭之前还存在
数据库的基本内容前面都已经说得差不多了,接下看看怎样在C语言中使用sqlite。 一 接口 sqlite3_open(const char *filename,sqlite3 **ppDb) 打开数据库,如果数据库不存在则新建一个数据库,并打开
sqlite3_close(sqlite3*) 关闭数据库,如果关闭之前还存在没有执行完的语句,将会返回 SQLITE_BUSY
二 实例 1 目录结构 Projects{ main.c// 代码所在文件 sqlite{// 官网下载下来的sqlite压缩包解压之后的文件目录 shell.c// 本文件在项目中实际上是用不上的,这个文件是用来生成sqlite命令工具的,具体可以参考:sqlite学习笔记1 sqlite3.c sqlite3.h sqlite3ext.h } }
2 源代码 // main.c #include <stdio.h> #include <stdlib.h> #include "sqlite/sqlite3.h" #define DB_NAME "hanfeng.db" int main() { sqlite3* db = NULL ; char* msg = NULL ; int ret = 0 ; ret = sqlite3_open(DB_NAME,&db); if (ret){ fprintf(stderr,"error open datebase:%sn.",DB_NAME) ; exit(0) ; } else{ fprintf(stdout,"successfully open datebase.n") ; } sqlite3_close(db) ; return 0; }
为了今后扩展方便,现将代码修改如下: #include <stdio.h> #include <stdlib.h> #include "sqlite/sqlite3.h" #define DB_NANE "sqlite/test.db" sqlite3 *db = NULL; char* sql = NULL; char *zErrMsg = NULL; int ret = 0; typedef enum{ false,true } bool; static int callback(void *NotUsed,int argc,char **argv,char **azColName) { int i = 0; for(i=0; i < argc; i++){ printf("%s = %sn",azColName[i],argv[i] ? argv[i] : "NULL"); } printf("n"); return 0; } bool connectDB() { ret = sqlite3_open(DB_NANE,&db); if( ret != SQLITE_OK){ fprintf(stderr,"Error open database: %sn",sqlite3_errmsg(db)); sqlite3_free(zErrMsg); return false; } fprintf(stdout,"Successfully opened databasen"); return true; } bool closeDB() { int ret = 0; ret = sqlite3_close(db); if ( ret == SQLITE_BUSY ){ return false; } return true; } int main(int argc,char* argv[]) { connectDB(); closeDB(); return 0; }
运行有两种方式,基于前面的笔记,我们并没有配置sqlite的环境,仅仅是下载解压得到列一个文件夹sqlite,因此,需要用如下命令: gcc -o main main.c ./sqlite/sqlite3.c -lpthread -ldl 如果下载配置安装了sqlite,则需要将上面的头文件包含改为: #include <sqlite3.h> 然后执行命令: gcc -o main main.c -lsqlite3
./main 既可以看到结果。
#在编译时使用g++会报错:error: invalid conversion from ‘const void*’ to ‘const char*’ g++貌似对类型转换要求更为严格,不支持这样的转换。 路过的大侠,知道怎样用g++编译的,请指教...... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |