sqlite3入门基础、sqlite3常用函数

1、打开/创建一个数据库

  int sqlite3_open(const char *filename,  sqlite3 **ppDb );

功能:打开数据库链接
参数:filename:数据库的路径和文件名
ppdb:数据库句柄。
返回:成功  SQLITE_OK (值为0),否则返回其他值。

2、回调函数执行sql语句

int sqlite3_exec(sqlite3* pDB, const char *sql, sqlite_callback callback, void*para, char** errMsg);

功能:编译和执行零个或多个SQL 语句,查询的结果返回给回调函数callback
参数:
pDB,数据库句柄。
sql,待执行的SQL 语句字符串,以’\0’结尾。
callback,回调函数,用来处理查询结果,如果不需要回调(比如做insert 或者delete 操作时),可以输入NULL。
para,要传入回调函数的指针参数,没有可以置为NULL。
errMsg,返回错误信息,注意是指针的指针。

返回值:执行成功返回SQLITE_OK,否则返回其他值

3、回调函数

 typedef int (*sqlite_callback)(void* para,  int columnCount,  char** columnValue,
 char** columnName);

功能:由用户处理查询的结果
参数:
para,从sqlite3_exec()传入的参数指针;
columnCount, 查询到的这一条记录有多少个字段(即这条记录有多少列);
columnValue,查询出来的数据都保存在这里,它实际上是个1 维数组(不要以为是2 维数组),每一个元素都是一个char * 值,是一个字段内容(用字符串来表示,以‘\0’结尾);
columnName,与columnValue 是对应的,表示这个字段的字段名称。
返回值:执行成功返回SQLITE_OK,否则返回其他值

4、关闭

  int sqlite3_close(sqlite3 *ppDb);

功能:关闭数据库。
参数:ppdb:数据库句柄。

5、释放   

void sqlite3_free(void * errMsg );

功能:释放存放错误信息的内存空间
参数:errMsg: 返回错误信息

6、    非回调来执行sql语句

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

功能:非回调来执行sql语句
db:数据库句柄
zSql:要执行的SQL语句
pazResult:查询结果,一维数组
pnRow:查询出多少条记录(查出多少行)
pnColumn:多少个字段(查出多少列)
pzErrmsg:错误信息

返回值:执行成功返回SQLITE_OK,否则返回其他值

注:pazResult的字段值是连续的,是以为数组不是二维数组,从第0索引到第 pnColumn- 1索引都是字段名称,从第 pnColumn索引开始,后面都是字段。


7、释放pazResult查询结果   

 sqlite3_free_table(char ***pazResult);

参数:pazResult:查询结果,一维数组
 

例子:

选课管理系统

  1. 支持学生信息录入功能 学生表(学生学号,学生姓名,学生性别, 健康指数)。
  2. 支持老师信息录入功能 教师表(老师ID,老师姓名,老师性别, 课程名字) 一个老师只会教一门课。
  3. 支持学生信息查询功能(全查询,按性别分组查询group by,按学号降序查询order by,按性别分组查询男女各自的健康总指数 group by , having,模糊查询学号like)单表查询。
  4. (扩展)支持学生选课功能(可以选哪个老师上课) 选课表 (学生学号,老师ID)。
  5. (扩展)支持选课结果查询功能 join 。
#include 	
#include  
#include 
#include "/home/sqlite/include/sqlite3.h"

static int callback(void *NotUsed, int argc, char **argv, char **azColName){
  int i;
  for(i=0; i

 

 

你可能感兴趣的:(C/C++,嵌入式开发,数据库)