1、创建数据库
sqlite3 *db = NULL;
int result = sqlite3_open(db_name,&db);
//数据库的名字,和一个sqlite3类型变量
2、创建标头
sprintf(sql,"create table %s (id int,name varchar,score int)",db_name);
sqlite3_exec(db,sql,NULL,&errmsg);
3、插入
sprintf(sql,"insert into %s values (%d,"%s",%d)",
db_name,stu->id,stu->name,stu->score);
//插入的时候,有几列就必须写几样,否则写入不进去数据库
sqlite3_exec(db,&errmsg);
4、打印
(1)sprintf(sql,"select * from %s",db_name);
sqlite3_exec(db,show_myinfo,&errmsg);
(2)sprintf(sql,db_name);
sqlite3_get_table(db,&dbResult,&row,&col,&errmsg);
5、删除
sprintf(sql,"delete from %s where id=%d",db_name,id);
sqlite3_exec(db,&errmsg);
6、查找
(1)sprintf(sql,"select * from %s where name='%s'",name);//查找名字%s必须要加上'',[]加不加都可以,from千万别打错了
sqlite3_exec(db,(void *)sql,"select * from %s where [id]='%d'",id);
sqlite3_get_table(db,&errmsg);
7、排序
(1)sprintf(sql,"select * from %s order by name","select * from %s order by id",&errmsg);
8、关闭数据库
sqlite3_close(db);
demo示例:
#include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<string.h> #include"sqlite3.h"
typedef struct str { int id; char name[30]; int score; }STU;
/**************************************************** *语法格式:int show_myinfo(void *para,int n_column, char **column_value,char **column_name) *功能描述:是回调函数指针,当这条语句 执行之后,sqlite3会去调用你提供的这个函数。 *参数类型:para=当执行sqlite3_exec的时候传递给回 调函数的参数。 n_column=结果集的列数 column_value=结果集中某一行信息的一维数组 的地址。 column_name=结果集中每列列名的数组的地址。 回调函数的返回值:若为非0值,则通知 sqlite3_exec终止回调。 *返回描述:整形 ******************************************************/ int show_myinfo(void *para, char **column_value,char **column_name) { int i = 0; //printf("para = %dn",*((int *)para)); //printf("n_column=%dn",n_column); //for(i=0;i<n_column;i++) //{ //printf("%st",column_name[i]); //}
for(i=0;i<n_column;i++) { printf("%st",column_value[i]); } printf("n"); return 0; }
/**************************************************** *语法格式:sqlite3 *create_db(char *db_name) *功能描述:打开数据库 *参数类型:db_name=数据库文件名,必需是(UTF-8)编码。 *返回描述:返回数据指针 ******************************************************/ sqlite3 *create_db(char *db_name) { sqlite3 *db = NULL; int result = sqlite3_open(db_name,&db); if(result) { printf("sqlite3_open %s errorn",db_name); sqlite3_close(db); _exit(-1); } else { printf("create %s succeed!n",db_name); } return db; }
/**************************************************** *语法格式:void create_db_table(sqlite3 *db,char *db_name) *功能描述:创建表头 id name score *参数类型:db=数据库指针,db_name=数据库名 *返回描述:无 ******************************************************/ void create_db_table(sqlite3 *db,char *db_name) { char sql[100] = ""; char *errmsg = NULL; sprintf(sql,db_name); sqlite3_exec(db,&errmsg); }
/**************************************************** *语法格式:void insert_db(sqlite3 *db,char *db_name,STU *stu) *功能描述:插入数据 *参数类型:db=数据库指针,db_name=数据库名,stu=插入数据的结构体 *返回描述:无 ******************************************************/ void insert_db(sqlite3 *db,STU *stu) { char sql[100] = ""; char *errmsg = NULL; sprintf(sql, db_name,stu->score);//插入的时候,有几列就必须写几样,否则写入不进去数据库。不应该啊?? sqlite3_exec(db,&errmsg);
}
/**************************************************** *语法格式:void print_db_exec(sqlite3 *db,char *db_name) *功能描述:使用sqlite3_exec函数获取数据库信息,并打印出来 *参数类型:db=数据库指针,db_name=数据库名, *返回描述:无 ******************************************************/ void print_db_exec(sqlite3 *db,&errmsg); } /**************************************************** *语法格式:void print_db_get_table(sqlite3 *db,char *db_name) *功能描述:使用sqlite3_get_table函数获取数据库信息,并打印出来 *参数类型:db=数据库指针,db_name=数据库名, *返回描述:无 ******************************************************/ void print_db_get_table(sqlite3 *db,char *db_name) { char sql[100] = ""; char *errmsg = NULL; char **dbResult = NULL; int row = 0,col = 0,i = 0,j = 0,index = 0; sprintf(sql,db_name); sqlite3_get_table(db,&errmsg); //printf("ddddddddddrow=%d,col=%dn",row,col); for(i=0;i<row+1;i++) { for(j=0;j<col;j++) { printf("%st",dbResult[index]); ++index; } printf("n"); } }
/**************************************************** *语法格式:void delete_db_by_id(sqlite3 *db,int id) *功能描述:通过id号删除数据库中的一行数据 *参数类型:db=数据库指针,db_name=数据库名,id=数据库中的id号 *返回描述:无 ******************************************************/ void delete_db_by_id(sqlite3 *db,int id) { char sql[100] = ""; char *errmsg = NULL; sprintf(sql,id); sqlite3_exec(db,&errmsg);
} /**************************************************** *语法格式:void find_db_by_name_exec(sqlite3 *db,char *name) *功能描述:使用sqlite3_exec函数,通过名字查找数据库中的内容 *参数类型:db=数据库指针,db_name=数据库名,name=数据库中的name号 *返回描述:无 ******************************************************/ void find_db_by_name_exec(sqlite3 *db,char *name) { char sql[100] = ""; char *errmsg = NULL; sprintf(sql,from千万别打错了 sqlite3_exec(db,&errmsg); } /**************************************************** *语法格式:void find_db_by_id_get_table(sqlite3 *db,int id) *功能描述:使用sqlite3_get_table函数,通过id号查找数据库中的内容 *参数类型:db=数据库指针,db_name=数据库名,id=数据库中的id号 *返回描述:无 ******************************************************/ void find_db_by_id_get_table(sqlite3 *db,int id) { char sql[100] = ""; char *errmsg = NULL; char **dbResult = NULL; int row,col,i,j; int index = 0; sprintf(sql,id); sqlite3_get_table(db,&errmsg); //printf("row=%d,col=%d,errmsg=%sn",errmsg); for(i=0;i<row+1;i++) { for(j=0;j<col;j++) { printf("%st",dbResult[index++]); } printf("n"); } } /**************************************************** *语法格式:void order_db_by_name_exec(sqlite3 *db,char *db_name) *功能描述:使用sqlite3_exec函数,通过名字排序数据库中的内容 *参数类型:db=数据库指针,db_name=数据库名 *返回描述:无 ******************************************************/ void order_db_by_name_exec(sqlite3 *db,&errmsg); } /**************************************************** *语法格式:void order_db_by_id_get_table(sqlite3 *db,char *db_name) *功能描述:使用sqlite3_get_table函数,通过id号排序数据库中的内容 *参数类型:db=数据库指针,db_name=数据库名 *返回描述:无 ******************************************************/ void order_db_by_id_get_table(sqlite3 *db,char *db_name)//排序之后不会改变原来数据中数据的位置 { char sql[100] = ""; char *errmsg = NULL; char **dbResult = NULL; int row,col; sprintf(sql,&errmsg);
print_db_get_table(db,db_name); }
int main(void) { sqlite3 *db = NULL;
STU stu; stu.id = 76; strcpy(stu.name,"halo"); stu.score = 55; db = create_db("../test/aaaaaa.db"); create_db_table(db,"aaaaaa"); insert_db(db,"aaaaaa",&stu); //print_db_exec(db,"aaaaaa"); printf("**********************************n"); //delete_db_by_id(db,stu.id); print_db_get_table(db,"aaaaaa"); //printf("n**********************************n"); //find_db_by_name_exec(db,"lihuibo"); //find_db_by_id_get_table(db,1);
printf("n**********************************n"); //order_db_by_name_exec(db,"aaaaaa");
order_db_by_id_get_table(db,"aaaaaa"); sqlite3_close(db); return 0; } (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|