9月15日
#include <myhead.h>
//定义添加学生信息函数
int do_add(sqlite3 *ppDb)
{
int add_id; //要添加的id号
char add_name[20]; //要添加的姓名
double add_score; //要添加的成绩
printf("请输入要添加学生的学号:");
scanf("%d", &add_id);
printf("请输入要添加学生的姓名:");
scanf("%s", add_name);
printf("请输入要添加学生的成绩:");
scanf("%lf", &add_score);
getchar();
//准备sql语句
char *sql = "insert into STUINFO values(add_id, add_name,add_score);";
//执行sql语句
char *errmsg = NULL;
if(sqlite3_exec(ppDb, sql, NULL, NULL, &errmsg) != SQLITE_OK)
{
printf("添加失败:%s\n", errmsg);
sqlite3_free(errmsg);
errmsg = NULL;
return -1;
}
if(sqlite3_changes(ppDb) != 0)
{
printf("添加成功\n");
}
return 0;
}
//自定义查询函数的回调函数
int callback(void *arg, int cols, char **msgtext, char **msgheader)
{
if( *(int *)arg ==0)
{
//先输出表头
for(int i=0; i<cols; i++)
{
printf("%s\t", msgheader[i]);
}
printf("\n");
*(int *)arg = 1;
}
//输出内容
for(int i=0; i<cols; i++)
{
printf("%s\t", msgtext[i]);
}
printf("\n");
return 0;
}
//定义查找函数
int do_search(sqlite3 *ppDb)
{
//1、准备sql语句
char *sql = "select * from stuinfo;";
//char sql[128] = "select * from stuinfo;";
//2、执行sql语句
char *errmsg = NULL;
int flag = 0;
if(sqlite3_exec(ppDb, sql, callback, &flag, &errmsg) != SQLITE_OK)
{
printf("查询失败:%s\n", errmsg);
sqlite3_free(errmsg);
errmsg = NULL;
return -1;
}
printf("查询成功\n");
return 0;
}
/******************************主程序****************************/
int main(int argc, const char *argv[])
{
//1、打开数据库并返回一个操作该数据库的句柄
sqlite3 * ppDb = NULL;
if(sqlite3_open("./my.db", &ppDb) != SQLITE_OK)
{
printf("my.db open error errcode=%d,errmsg=%s\n",\
sqlite3_errcode(ppDb), sqlite3_errmsg(ppDb));
return -1;
}
//2、创建一个学生信息表
//准备sql语句
char *sql = "create table if not exists stuinfo(id int primary key,\
name text not NULL,\
score double);";
//定义指针接收执行sql语句后的错误信息
char *errmsg = NULL;
//执行sql语句
if(sqlite3_exec(ppDb, sql, NULL, NULL, &errmsg) != SQLITE_OK)
{
printf("创建数据表失败:%s\n", errmsg);
sqlite3_free(errmsg);
errmsg = NULL;
return -1;
}
printf("学生信息表创建成功\n");
//循环做个菜单用于操作数据库
int menu = -1;
while(1)
{
system("clear"); //执行系统终端指令
printf("\t\t==============XXX学生管理系统=============\n");
printf("\t\t==============1、增=======================\n");
printf("\t\t==============2、删=======================\n");
printf("\t\t==============3、改=======================\n");
printf("\t\t==============4、查=======================\n");
printf("\t\t==============0、退出=======================\n");
printf("请输入功能:");
scanf("%d", &menu);
getchar();
//多分支选择
switch(menu)
{
case 1:
{
do_add(ppDb);
}
break;
case 2:
{
//do_delete(ppDb);
}
break;
case 3:
{
//do_update(ppDb);
}
break;
case 4:
{
do_search(ppDb);
}
break;
case 0: exit(EXIT_SUCCESS);
default:printf("输入有错\n");
}
}
//关闭数据库
sqlite3_close(ppDb);
return 0;
}