SQLite

SQLite 基础

SQLite 数据库

安装数据库:

  • sudo apt-get install sqlite sqlite3
  • sudo apt-get install libsqlite3-dev

创建 SQLite 数据库

sqlite3 stu.db

SQLite 常用命令介绍

sqlite 命令

系统命令 以 . 开头
普通命令 ,以 ; 结束
.schema 查看表的结构
.quit 退出数据库
.exit 退出数据库
.help 查看帮助信息
.databases 查看数据库
.tables 显示数据库中所有的表的表名

sqlite3 的使用

创建一张表:

  • create table 表名(字段名称1 字段类型,字段名称2 字段类型, ....);
  • create table stu(id int, name char, sex char , score int);

数据库主键(既设置的数据将会是唯一存在的):

  • create table usr(name text primary key , passwd text);

向表中插入一条记录:

  • insert into 表名 values (字段值1, 字段值2, ...);
  • insert into stu values(1001, 'zhangsan', 'm', 89);
  • insert into stu (id, name, sex,score) values(1002, 'lisi', 'm', 99);

查询记录:

  • select * from stu; 查找所有的记录
  • select * from stu where id=1001; 查找符号条件的记录
  • select * from stu where id=1001 and name='zhangsan'; 字符串需要加引号
  • select * from stu where name = 'zhangsan' or score=92;

删除记录:

  • delete from stu where id=1004;

更新记录:

  • update stu set score=98 where id=1003;

删除一张表:

  • drop table stu;

添加一列:

  • alter table stu add column score int;

删除一列(sqlite3 不允许直接删除一列):

  • 先创建一张新表:create table stu1 as select id , name from stu;
  • 删除原来的旧表:drop table stu;
  • 对新表重命名:alter table stu1 rename to stu;

SQLite 编程接口

sqlite3_open

int sqlite3_open(
    const char *filename,   /* Database filename (UTF-8) */
    sqlite3 **ppDb          /* OUT: SQLite db handle */
);

功能:打开一个数据库

参数:

  • filename 数据库名字
  • ppdb 操作数据库的指针,句柄。

返回值:

  • 成功 SQLITE_OK
  • 失败 error_code

例子:

sqlite3 *db;
if(sqlite3_open("stu.db", &db) != SQLITE_OK)
    printf("%s\n", sqlite3_errmsg(db));

sqlite3_errmsg

const char *sqlite3_errmsg(sqlite3* db);
功能:获取错误信息描述

sqlite3_close

int sqlite3_close(sqlite3* db);
功能:关闭一个数据库

sqlite3_exec

int sqlite3_exec(
    sqlite3* db,                                  /* An open database */
    const char *sql,                           /* SQL to be evaluated */
    int (*callback)(void*,int,char**,char**),  /* Callback function */
    void * arg,                             /* 1st argument to callback */
    char **errmsg                           /* Error msg written here */      );

功能:执行一条 sql 语句

参数:

  • db 数据库的句柄指针
  • sql 将要被执行sql语句
  • callback 回调函数, 只有在查询语句时,才给回调函数传参
  • argcallback 传参的
  • errmsg 错误信息的地址

返回值:

  • 成功: SQLITE_OK
  • 出错:errcode 错误码

例子:

char *errmsg;
if(sqlite3_exec(db, "create table stu(id int, name char, score int)", NULL, NULL, &errmsg) != SQLITE_OK)
    printf("%s\n", errmsg);

callback

int (*callback)(void* arg ,int ncolumn ,char** f_value,char** f_name)
功能:得到查询结果

参数:

  • arg 为回调函数传递参数使用的
  • ncolumn 记录中包含的字段的数目
  • f_value 包含每个字段值的指针数组
  • f_name 包含每个字段名称的指针数组

返回值:

  • 成功 0
  • 出错 非0

sqlite3_get_table

int sqlite3_get_table(
    sqlite3 *db,          /* An open database */
    const char *zSql,     /* SQL to be evaluated */
    char ***pazResult,    /* Results of the query */
    int *pnRow,           /* Number of result rows written here */
    int *pnColumn,        /* Number of result columns written here */
    char **pzErrmsg       /* Error msg written here */  );

功能:查询数据库,它会创建一个新的内存区域来存放查询的结果信息

参数:

  • db 数据库操作句柄

  • sql 数据库的sql语句

  • azResult 查询的结果

  • nRow 行数,为查询到的符合条件的记录数(不包括字段名)。

    • 注意:nrow 的值不包括字段名,如果打印时用 for (i = 0; i < nrow; i++) 会打印出字段名,但是会少打印出一条符合条件的记录。因此打印时要用 for (i = 0; i <nrow + 1; i++); 将包括字段名在内的数据都打印出来。
  • nColumn 列数,为查询到的符合条件的字段数。

  • errmsg 错误消息

返回值:

  • 成功 0
  • 出错 errcode

sqlite3_free_table

void sqlite3_free_table(char **result);
功能:释放内存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值