c语言之SQLite数据库开发

一、数据库的安装

// 准备软件包
libsqlite3-0_3.7.2-1ubuntu0.1_i386.deb
libsqlite3-dev_3.7.2-1ubuntu0.1_i386.deb
sqlite3_3.7.2-1ubuntu0.1_i386.deb
// 安装
sudo dpkg -i  *.deb

二、 数据库命令

(一)系统命令(以.开头)

.exit
.quit
.table   //查看表
.schema  //查看表的结构

(二)sql语句(以‘;’结尾)

    // 1-- 创建一张表
        create table stuinfo(id integer, name text, age integer, score float);

    // 2-- 插入一条记录
        insert into stuinfo values(1001, 'zhangsan', 18, 80);
        insert into stuinfo (id, name, score) values(1002, 'lisi', 90);

    // 3-- 查看数据库记录
        select * from stuinfo;
        select * from stuinfo where score = 80;
        select * from stuinfo where score = 80 and name= 'zhangsan';
        select * from stuinfo where score = 80 or name='wangwu';
        select name,score from stuinfo;  //查询指定的字段
        select * from stuinfo where score >= 85 and score < 90;

    // 4-- 删除一条记录
        delete from stuinfo where id=1003 and name='zhangsan';

    // 5-- 更新一条记录
        update stuinfo set age=20 where id=1003;
        update stuinfo set age=30, score = 82 where id=1003;

    // 6-- 删除一张表
        drop table stuinfo;

    // 7-- 增加一列
        alter table stuinfo add column sex char;

    // 8-- 删除一列
        create table stu as select id, name, score from stuinfo;
        drop table stuinfo;
        alter table stu rename to stuinfo;

 // 数据库设置主键:
 create table info(id integer primary key autoincrement, name vchar);

三、sqlite3 数据库 C语言 API

int sqlite3_open(
    const char *filename,   /* Database filename (UTF-8) */
    sqlite3 **ppDb          /* OUT: SQLite db handle */
);
  • 功能:打开数据库
  • 参数:filename 数据库名称 ​ ppdb 数据库句柄
  • 返回值:成功为0 SQLITE_OK ,出错 错误码
int sqlite3_close(sqlite3* db);
  • 功能:关闭数据库

  • 参数:db 数据库句柄

  • 返回值:成功为0

    SQLITE_OK ,出错 错误码

const char *sqlite3_errmsg(sqlite3*db);
  • 功能:得到错误信息的描述
int sqlite3_exec(
    sqlite3* db,                                  /* An open database */
    const char *sql,                           /* SQL to be evaluated */
    int (*callback)(void* arg,int,char**,char**),  /* Callback function */
    void * arg,                                    /* 1st argument to callback */
    char **errmsg                              /* Error msg written here */
);
  • 功能:执行一条sql语句
  • 参数:db 数据库句柄 ​ sql sql语句 ​ callback 回调函数,只有在查询时,才传参 ​ arg 为回调函数传递参数 ​ errmsg 错误消息
  • 返回值:成功 SQLITE_OK

查询回调函数:

int (*callback)(void* arg,int ncolumns ,char** f_value,char** f_name),  /* Callback function */
  • 功能:查询语句执行之后,会回调此函数
  • 参数:arg 接收sqlite3_exec 传递来的参数 ​ ncolumns 列数 ​ f_value 列的值得地址 ​ f_name 列的名称
  • 返回值:0

查询:

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 */
);

void sqlite3_free_table(char **result);

 

数据库官网API:https://www.sqlite.net.cn/c3ref/sqlite3.html

此博客中的热门博文

玩转虚拟机系列之如何搭建虚拟机

玩转虚拟机系列之远程工具

玩转虚拟机系列之如何高效创建虚拟机