博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQLite - C/C++接口 API(一)
阅读量:6176 次
发布时间:2019-06-21

本文共 3967 字,大约阅读时间需要 13 分钟。

1、sqlite3_open(const char *filename, sqlite3 **ppDb)

该例程打开一个指向 SQLite 数据库文件的连接,返回一个用于其他 SQLite 程序的数据库连接对象。

如果 filename 参数是 NULL 或 ':memory:',那么 sqlite3_open() 将会在 RAM 中创建一个内存数据库,这只会在 session 的有效时间内持续。

如果文件名 filename 不为 NULL,那么 sqlite3_open() 将使用这个参数值尝试打开数据库文件。如果该名称的文件不存在,sqlite3_open() 将创建一个新的命名为该名称的数据库文件并打开。

 

2、sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg)

该例程提供了一个执行 SQL 命令的快捷方式,SQL 命令由 sql 参数提供,可以由多个 SQL 命令组成。

在这里,第一个参数 sqlite3 是打开的数据库对象,sqlite_callback 是一个回调,data 作为其第一个参数,errmsg 将被返回用来获取程序生成的任何错误。

sqlite3_exec() 程序解析并执行由 sql 参数所给的每个命令,直到字符串结束或者遇到错误为止。

 

3、sqlite3_close(sqlite3*)

该例程关闭之前调用 sqlite3_open() 打开的数据库连接。所有与连接相关的语句都应在连接关闭之前完成。

如果还有查询没有完成,sqlite3_close() 将返回 SQLITE_BUSY 禁止关闭的错误消息。

 

实例一、

1 #include 
2 #include
3 #include "../Sqlite3/sqlite3.h" 4 using namespace std; 5 6 int callback(void*,int,char**,char**); 7 8 int CreateSQLite(void); 9 10 int main(int argc, char *argv[])11 {12 CreateSQLite();13 14 return 0;15 }16 17 int callback(void *NotUsed, int argc, char **argv, char **azColName)18 {19 int i;20 for(i=0; i

运行结果:

 

实例二:

1 #include 
2 #include
3 #include "../Sqlite3/sqlite3.h" 4 5 int callback(void *NotUsed, int argc, char **argv, char **azColName); 6 7 int connect_db(char const *p_db_name); 8 9 int update_db(sqlite3 *p_db); 10 11 int selec_clo_db(sqlite3 *p_db); 12 13 int main(int argc, char *argv[]) 14 { 15 connect_db("mytest.db"); 16 17 return 0; 18 } 19 20 int callback(void *NotUsed, int argc, char **argv, char **azColName) 21 { 22 int i = 0; 23 for (i = 0; i < argc; ++i) 24 { 25 printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL"); 26 } 27 printf("\n"); 28 29 return 0; 30 } 31 32 int connect_db(char const *p_db_name) 33 { 34 int rec = 0; 35 sqlite3 *p_db = NULL; 36 char *p_err_msg = NULL; 37 char *p_sql = "SELECT * FROM PERSON;"; 38 39 if (NULL == p_db_name) 40 { 41 printf("DB Name is NULL \n"); 42 return -1; 43 } 44 45 rec = sqlite3_open(p_db_name, &p_db); 46 if (SQLITE_OK != rec) 47 { 48 fprintf(stdin, "sqlite3_open func err : %s\n", sqlite3_errmsg(p_db)); 49 return rec; 50 } 51 52 rec = sqlite3_exec(p_db, p_sql, callback, 0, &p_err_msg); 53 if (SQLITE_OK != rec) 54 { 55 printf("sqlite3_exec function err : %s\n", p_err_msg); 56 sqlite3_free(p_err_msg); 57 sqlite3_close(p_db); 58 return rec; 59 } 60 61 62 63 rec = update_db(p_db); 64 if (0 != rec) 65 { 66 fprintf(stdin, "update_db function err\n"); 67 } 68 69 return rec; 70 } 71 72 int update_db(sqlite3 *p_db) 73 { 74 int rec = 0; 75 char *p_sql = "UPDATE PERSON SET NAME = 'KING' WHERE ID = 2;"; 76 char *p_err_msg = NULL; 77 78 if (NULL == p_db) 79 { 80 printf("update_db func p_db is NULL\n"); 81 return -1; 82 } 83 84 rec = sqlite3_exec(p_db, p_sql, NULL, 0, &p_err_msg); 85 if (SQLITE_OK != rec) 86 { 87 printf("update_db sqlite3_exec func err : %s\n", p_err_msg); 88 sqlite3_free(p_err_msg); 89 sqlite3_close(p_db); 90 return rec; 91 } 92 93 printf("修改之后 !\n"); 94 rec = selec_clo_db(p_db); 95 if (0 != rec) 96 { 97 printf("select_clo_db func err \n"); 98 } 99 100 return rec;101 }102 103 int selec_clo_db(sqlite3 *p_db)104 {105 int rec = 0;106 char *p_sql = "SELECT * FROM PERSON;";107 char *p_err_msg = NULL;108 109 rec = sqlite3_exec(p_db, p_sql, callback, 0, &p_err_msg);110 if (SQLITE_OK != rec)111 {112 printf("selec_clo_db sqlite3_exec func err :%s\n", p_err_msg);113 sqlite3_free(p_err_msg);114 }115 116 sqlite3_close(p_db);117 118 return rec;119 }

运行结果:

 

转载于:https://www.cnblogs.com/Toney-01-22/p/9917436.html

你可能感兴趣的文章
汽车OS混战时刻:斑马加快争夺新的应用场景
查看>>
第十九章:集合视图(十七)
查看>>
BIOS
查看>>
Elasticsearch之元数据(meta-fields)介绍
查看>>
基于Django+Bootstrap框架,可视化展示内存监控信息
查看>>
Pytorch | BERT模型实现,提供转换脚本【横扫NLP】
查看>>
biostar handbook: 第七周笔记汇总+调整通知
查看>>
涨薪必备|给你一份超详细Spring Boot知识清单
查看>>
YII2 关联查询,不修改search, 使用 GridView::widget 输出
查看>>
DNS服务-了解篇
查看>>
springcloud应用程序上下文层次结构
查看>>
Apache Shiro在web开发安全技术中的应用
查看>>
继续内存优化——一脸懵逼
查看>>
每天五分钟linux(3)-pwd
查看>>
js 获取 url 查询参数
查看>>
数据价值提升新模式:数据资产管理“AIGOV五星模型”
查看>>
Linux安装jdk
查看>>
经验积累:SoapUI的使用相关--动态取得的Soap Message内容,动态匹配应答
查看>>
SMG协同办公平台规划与实践
查看>>
短视频客户端SDK设计与实现
查看>>