转载至:https://blog.csdn.net/dancer__sky/article/details/79034329
概述:sqlite3数据库是一个比较精简的数据库操作库,在嵌入式设备上,因其轻量级,大多使用的就是这货了。当然它的使用也是比较简单的,通过几个基础的API就可以完成一些基本的操作了。最近使用这货,所以做一下学习笔记,省得以后用到又的查资料麻烦。这篇笔记就主要是数据库的创建还有基础的几个API介绍。后面的话会具体记录一下数据库的增删改查,以及事务部分。
使用测试环境:
系统linux:ubuntu14.04
1,sqlite3库下载地址
官网地址:https://www.sqlite.org/download.html.
2,四个基础API介绍
int sqlite3_open(
const char *filename, /* Database filename */
sqlite3 **ppDb /* OUT: SQLite db handle */
);
/*
打开/创建数据库文件的API,第一个参数是文件路径及名字,第二个参数是sqlite3操作句柄。在使用该API时,如果我们打开的数据库文件不存在就创建一个,并且会返回一个数据库操作句柄,保存到我们输入的第二个参数。操作成功,返回值为SQLITE_OK.
*/
int sqlite3_exec(
sqlite3*, /* An open database */
const char *sql, /* SQL to be evaluated */
int (*callback)(void*,int,char**,char**), /* Callback function */
void *, /* 1st argument to callback */
char **errmsg /* Error msg written here */
);
/*
这个API就是主要执行sql语句的,第一个参数,打开的数据库操作句柄。第二个参数,sql语句,就是我们要执行的命令。第三个参数,回调函数。第四个参数,传入回调函数的参数。第五个参数,保存操作失败时的错误信息。操作成功,返回值为SQLITE_OK.
*/
void sqlite3_free(void *);
/*
这个API就是释放申请的动态内存了,在上一个API操作中,假设出现操作失败,错误信息保存在最后一个参数中,它的内存是动态申请的,这时候我们就要通过这个函数就释放内存了。
*/
int sqlite3_close(sqlite3 *);
/*
这个API就是关闭数据库的操作,第一个参数就是sqlite3操作句柄。一般在我们结束或出错时调用来关闭数据库。
*/
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
上面说到了sql语句,对于sql语句的语法可能要自己了解一下,这里放一个网址:
http://www.runoob.com/sqlite/sqlite-insert.html.
3,数据库文件及表创建
#include <sqlite3.h>
#include <stdio.h>
#define TABLE "student"
int main(void) {
sqlite3 *db;
char *err_msg = NULL;
/*打开或创建数据库test.db文件*/
int rc = sqlite3_open("test.db", &db);
if (rc != SQLITE_OK) {
printf("open database test.db failed\n");
sqlite3_close(db);
return 1;
}
/*
此sql语句意思,如果student这张表不存在就创建student表,
表的格式为主键id int类型、name 字符串类型、uuid int类型、uuid 唯一性 不可重复
*/
char *sql = "CREATE TABLE IF NOT EXISTS student (\
[id] INTEGER PRIMARY KEY AUTOINCREMENT,\
[name] TXT,\
[uuid] INTEGER,\
UNIQUE([uuid])\
);";
/*执行上述sql语句*/
rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
if (rc != SQLITE_OK ) {
printf("SQL error: %s\n", err_msg);
sqlite3_free(err_msg);
sqlite3_close(db);
return 1;
}
/*关闭数据库*/
sqlite3_close(db);
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
最后
我自己写了一个sqlite3的操作demo,代码下载用cmake编译一下就可以跑了,一般满足基本需求了,如果需要的话可以下载:http://download.csdn.net/download/dancer__sky/10200497.
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea0013b516.css">
</div>