一 sqlite函数接口
1.SQLITE_API
int sqlite3_open(const char *filename,sqlite3 **ppDb);
/* Database filename (UTF-8) */
/* OUT: SQLite db handle */
功能:打开一个数据库文件
参数:
filename 数据库文件名
ppDb 获得数据信息在内存的首地址
返回值:
成功返回SQLITE_OK,失败返回错误码
2.SQLITE_API
const char *sqlite3_errmsg(sqlite3 *pdb);
功能:获取数据库操作失败信息
参数:
pdb 通过sqlite3_open 获得句柄
返回值
返回错误信息的首地址
3.SQLITE_API
int sqlite3_close(sqlite3 *pdb)
功能:关闭数据库
参数:
pdb 通过sqlite3_open 获得句柄
4.SQLITE_API 回调方式执行sql
int sqlite3_exec(sqlite3* db,const char *sql,int (*callback)(void*,int,char**,char**),void * arg,char **errmsg );
/* An open database */
/* SQL to be evaluated */
/* Callback function */
/* 1st argument to callback */
/* Error msg written here */
功能:执行一条sql语句
参数:
db 打开的数据库
sql sql语句
callback 回调函数,做查询操作的时候,回调函数会被调用,可通过回调函数打印查询到信息
arg 给回调函数传递的参数
errmsg 获得错误信息
返回值:
成功返回0,失败返回错误码
int (*callback)(void *arg,int n,char** pvalue,char **pname), /* Callback function */
参数:
arg 通过sqlite3_exec的函数接口传递的参数
n 查询到记录的字段个数,即列数
pvalue 存放字段值的指针数组首地址
pname 存放字段名的指针数组首地址
练习:
1.输入sql语句执行
2.输入用户名查询
int select_name(sqlite3 *db)
{
char sql[1024];
char name[15];
printf("Input name:");
scanf("%s",name);
//sql:select * from people where NAME='A'
sprintf(sql,"select * from people where NAME='%s';",name);
exec_sql(db,sql);
return 0;
}
int cmd;
char sql[N];
while(1)
{
scanf("%d",&cmd);
switch(cmd)
{
case 1:
printf("Input sql:");
fgets();
exec_sql(db,sql);
break;
case 2:
select_name(db);
break;
}
}