#include <stdio.h>
#include <sqlite3.h>
int do_insert(sqlite3 *db)
{
//从终端输入数据,插入到数据库中
int id;
char name[20];
float score;
printf("请输入id 姓名 成绩>>");
scanf("%d %s %f",&id,name, &score);
while(getchar() != 10);
char temp[1024] = "";
sprintf(temp,"insert into stu values(%d, \"%s\",%g);",id,name,score);
//char sql[256] = "insert into stu values(10, 'zs',90);";
//char sql[256] = "insert into stu values(10, \"zs\",90);";
char *errmsg = NULL;
if(sqlite3_exec(db, temp, NULL, NULL, &errmsg) != SQLITE_OK){
fprintf(stderr, "sqlite3_exec: %s __%d__",errmsg, __LINE__);
return -1;
}
printf("insert stu success __%d__\n",__LINE__);
return 0;
}
int do_delete(sqlite3 *db)
{
int id;
printf("请输入要删除的id>>");
scanf("%d",&id);
while( getchar() != 10);
char temp[1024] = "";
sprintf(temp,"delete from stu where id=%d",id);
char *errmsg = NULL;
if(sqlite3_exec(db, temp, NULL, NULL, &errmsg) != SQLITE_OK){
fprintf(stderr, "sqlite3_exec: %s __%d__",errmsg, __LINE__);
return -1;
}
printf("delete id=%d success __%d__\n",id,__LINE__);
return 0;
}
int do_modify(sqlite3 *db)
{
int id;
float score;
printf("请输入要修改的id以及成绩>>");
scanf("%d %f",&id,&score);
while( getchar() != 10);
char temp[1024] = "";
sprintf(temp,"update stu set score =%g where id =%d;",score,id);
char *errmsg = NULL;
if(sqlite3_exec(db, temp, NULL, NULL, &errmsg) != SQLITE_OK){
fprintf(stderr, "sqlite3_exec: %s __%d__",errmsg, __LINE__);
return -1;
}
printf("modify stu success __%d__\n",__LINE__);
return 0;
}
int check_callback(void *arg, int column, char **column_text, char **column_name)
{
//column_name
if( 0 ==*(int*)arg){
for(int i=0;i<column;i++)
printf("%s\t",column_name[i]);
putchar(10);
*(int*)arg =1;
}
//column_text
for(int i=0;i<column;i++)
printf("%s\t",column_text[i]);
printf("\n");
return 0; //若这个位置返回非0,则会终止sqlite3_exe函数
//该返回值是返回给sqlite3_exe函数的
//当sqlite3_exe
}
int do_check(sqlite3 *db)
{
char sql[256] = "select *from stu;";
char *errmsg = NULL;
int flag =0;
if(sqlite3_exec(db, sql, check_callback, &flag, &errmsg) != SQLITE_OK){
fprintf(stderr, "sqlite3_exec: %s __%d__",errmsg, __LINE__);
return -1;
}
printf("check stu success __%d__\n",__LINE__);
return 0;
}
int main(int argc, const char *argv[])
{
//创建打开数据库
sqlite3 *db = NULL;
if(sqlite3_open("./my.db", &db) != SQLITE_OK){
fprintf(stderr, "sqlite3_open: %d %s __%d__",\
sqlite3_errcode(db), sqlite3_errmsg(db), __LINE__);
return -1;
}
printf("sqlite3_open success __%d__\n",__LINE__);
//创建表格
char sql[256] = "create table if not exists stu (id int,name char,score float);";
char *errmsg = NULL;
if(sqlite3_exec(db, sql, NULL, NULL, &errmsg) != SQLITE_OK){
fprintf(stderr, "sqlite3_exec: %s __%d__",errmsg, __LINE__);
return -1;
}
printf("create table stu success __%d__\n",__LINE__);
//增删改查
int loop = 1;
int choose = 1;
while(loop){
printf("-------------------------\n");
printf("---------1.增添----------\n");
printf("---------2.删除----------\n");
printf("---------3.修改----------\n");
printf("---------4.查看----------\n");
printf("---------5.退出----------\n");
printf("-------------------------\n");
printf("请输入要执行的功能>>");
scanf("%d",&choose);
while(getchar() != '\n');
switch(choose){
case 1:
do_insert(db);
break;
case 2:
do_delete(db);
break;
case 3:
do_modify(db);
break;
case 4:
do_check(db);
break;
case 5:
loop = 0;
break;
default:
printf("输入错误,请重新输入\n");
}
}
//关闭数据库
if(sqlite3_close(db) !=SQLITE_OK){
fprintf(stderr,"sqlite3_close:%d %s __%d__",\
sqlite3_errcode(db), sqlite3_errmsg(db), __LINE__);
return -1;
}
return 0;
}