相关文档文件已打包,存储于云盘/Linux 文件夹下 文件名为:sqlite-doc-3071700.rar
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*);
功能:关闭数据库
参数: sqlite3数据库句柄
返回值: 成功为0 SQLITE_OK , 出错 错误码
const char *sqlite3_errmsg(sqlite3*db);
功能:得到错误信息的描述
参数: sqlite3数据库句柄
返回值: 错误描述字符串的首地址
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
typedef int (*sqlite3_callback)(void *para, int f_num, char **f_value, char **f_name);
功能:每找到一条记录自动执行一次回调函数
参数:
para:传递给回调函数的参数
f_num:记录中包含的字段数目
f_value:包含每个字段值的指针数组
f_name:包含每个字段名称的指针数组
返回值:成功返回0,失败返回-1
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操作 (不使用回调函数 执行SQL语句)
参数:
db:数据库句柄
sql:SQL语句
resultp:用来指向sql执行结果的指针
nrow:满足条件的记录的数目
ncolumn:每条记录包含的字段数目
errmsg:错误信息指针的地址
返回值:成功返回0 SQLITE_OK 失败返回错误码
#include <stdio.h> #include <sqlite3.h> #include <string.h> #define FILEADDR "std.db" void sqlinsert(sqlite3* db); void sqldelete(sqlite3* db); void sqlquery(sqlite3* db); void sqlupdate(sqlite3* db); int sqlcallback(void *para, int f_num, char **f_value, char **f_name); void sqltable(sqlite3 *db); int main() { sqlite3* db = NULL; int sqlErr = 0,cmd = 0; char strsql[128] = {0}; char* errmsg; /* 打开sqlite 获取句柄 */ sqlErr = sqlite3_open(FILEADDR,&db); if(sqlErr != SQLITE_OK){ printf("%s\n",sqlite3_errmsg(db)); return -1; } else{ printf("Success for open sqlist3\n"); } /* 创建一张表 */ strcpy(strsql,"create table stu(id integer,name char,age integer,score float);"); sqlErr = sqlite3_exec(db,strsql,NULL,NULL,&errmsg); if(sqlErr != SQLITE_OK){ printf("%s\n",sqlite3_errmsg(db)); } else{ printf("Create table done."); } while(1) { printf("***********************************************\n"); printf("1.insert 2.delete 3.query 4.update 5.quit\n"); printf("***********************************************\n"); scanf("%d",&cmd); switch(cmd) { case 1: sqlinsert(db);break; case 2: sqldelete(db);break; //case 3: sqlquery(db);break; case 3: sqltable(db);break; case 4: sqlupdate(db);break; case 5: return 0; default: printf("Error: cmd \n");break; } } return 0; } void sqlinsert(sqlite3* db) { int id,age; float score; char name[32]; int sqlErr = 0; char strsql[128] = {0}; char* errmsg; printf("begin to insert message:\n"); fflush(stdin); printf("id:"); scanf("%d",&id); fflush(stdin); printf("name:"); scanf("%s",name); fflush(stdin); printf("age:"); scanf("%d",&age); fflush(stdin); printf("score:"); scanf("%f",&score); fflush(stdin); sprintf(strsql,"insert into stu values(%d,'%s',%d,%f);",id,name,age,score); sqlErr = sqlite3_exec(db,strsql,NULL,NULL,&errmsg); if(sqlErr != SQLITE_OK){ printf("%s\n",sqlite3_errmsg(db)); return; } else{ printf("Success for insert\n"); } return; } void sqldelete(sqlite3* db) { int id; int sqlErr = 0; char strsql[128] = {0}; char* errmsg; printf("begin to delete message:\n"); printf("id:"); scanf("%d",&id); sprintf(strsql,"delete from stu where id = %d;",id); sqlErr = sqlite3_exec(db,strsql,NULL,NULL,&errmsg); if(sqlErr != SQLITE_OK){ printf("%s\n",sqlite3_errmsg(db)); return; } else{ printf("Success for delete\n"); } return; } void sqlquery(sqlite3* db) { char strsql[128]; char* errmsg; printf("begin to sqerry message:\n"); sprintf(strsql,"select * from stu;"); if(sqlite3_exec(db,strsql,sqlcallback,NULL,&errmsg)!=SQLITE_OK) { printf("%s\n",errmsg); } else { printf("Success for query\n"); } return; } void sqlupdate(sqlite3* db) { int id; float score; int sqlErr = 0; char strsql[128] = {0}; char* errmsg; printf("begin to update message:\n"); printf("id:"); scanf("%d",&id); printf("Update score:"); scanf("%f",&score); sprintf(strsql,"update stu set score = %f where id = %d;",score,id); sqlErr = sqlite3_exec(db,strsql,NULL,NULL,&errmsg); if(sqlErr != SQLITE_OK){ printf("%s\n",sqlite3_errmsg(db)); return; } else{ printf("Success for update\n"); } return; } int sqlcallback(void *para, int f_num, char **f_value, char **f_name) { int i = 0; for(i=0;i < f_num;i++){ printf("%-10s ",f_value[i]); } printf("\n"); return 0; } void sqltable(sqlite3 *db) { char** pazResult; int sqlErr = 0,pnRow,pnColumn; char strsql[128] = {0}; char* errmsg; sprintf(strsql,"select * from stu;"); sqlErr = sqlite3_get_table(db,strsql,&pazResult,&pnRow,&pnColumn,&errmsg); if(sqlErr != SQLITE_OK){ printf("%s\n",sqlite3_errmsg(db)); return; } else{ printf("Success for update\n"); } int i,j,index; for(i=0,index=0;i<pnRow;i++) { for(j=0;j<pnColumn;j++,index++) { printf("%-11s",pazResult[index]); } printf("\n"); } return; }