数据库
SQList轻量级数据库
-
sqlite3工具命令:
- sqlite3 *.db :打开或创建这个名字的数据库文件
- .tables :显示数据库文件中的数据库表名
- .schema lable:查看表中的内容
- .help :查看工具命令
-
数据库SQL命令
- 创建表:
- create lable (名字+类型) {ex:user(姓名 text,学号 integer)}
- 如果表存在则不管,不存在创建
- 插入数据
- intsert into (表名)values(值) {ex: user(姓名, 学号,…)values(‘丽丝’, 21,…)}不想写入的就写NULL
- 删除表
- drop table 表名
- 查询数据库表
- select (查询目标) from (查询表)
- ex: select 学号 … from user
- 如果学号为*则表示查询(查询表中)所以字段
- select (查询目标) from (查询表)
- 删除数据库表中某条数据
- delete from 表名 where 字段名=字段值
- ex:delete from user where 学号=21 (and 姓名=‘丽丝’)
- delete from 表名 where 字段名=字段值
- 修改数据库表,某条数据
- update 表名 set 要改的字段名=要改的字段值,要改的字段名=要改的字段值 where 来自哪个字段名=来自哪个的字段值
- ex:update user set 学号=32,性别=‘男’ … where 姓名=张三
- update 表名 set 要改的字段名=要改的字段值,要改的字段名=要改的字段值 where 来自哪个字段名=来自哪个的字段值
函数的运用
int sqlite3_open(char *path, sqlite3 **db) { 打开sqlite数据库 path : 数据库文件路径 db:指向sqlite句柄的指针 返回值:成功返回0 --SQLITE_OK 失败错误码 }
int sqlite3_close(sqlite3 *db) { 关闭数据库 返回值:成功0 失败错误码 }
const char *sqlite3_errmsg(sqlite3 *db) { 返回错误信息 }
typedef int (*sqlite3_callback)(void *,int, char **,char **) int sqlite3_exec(sqlite3 *db, const char *sql, sqlite3_callback callback, void *, char **errmsg) { 执行SQL操作 db:数据库句柄 sql:SQL语句 callback:回调函数 errmsg:错误信息指针地址 返回值:成功返回0,失败返回错误码 创建数据表: // primary key :设置字段为 主键 autoincrement:设置integer的主键 数值自增长 char sql[128] = "create table if not exists user( \ id integer primary key autoincrement, \ id名字 name text, \ 姓名 sex varchar, \ 性别 age integer);"; 年龄 sqlite3_exec(db, sql, NULL, NULL, NULL) 插入数据 sprintf(sql, "insert into user(id, name, sex, age) values(NULL, '%s', '%c', %d);", name, sex, age); sqlite3_exec(db, sql, NULL, NULL, NULL) 删除\修改都和上面的一样,把命令放入sql中,调用函数就能执行 }
int sqlite3_get_table(sqlite3 *db, const char *sql, char ***resultp, int *norw, int *ncolumn, char **errmsg); { db : 数据库句柄 sql:sql语句,这儿只能用查找语句 resultp :指向sql执行结果的指针(第一行为 字段,以下行才是字段数) nrow:返回查找总行数 ncolumn:返回表的列数 errmsg:错误信息的地址 返回值 : 成功 0 失败错误码 }
- 创建表: