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:查询结果,一维数组
例子:
选课管理系统
#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