8.20网络编程——sqlite3数据库

文章目录

一、思维导图

二、学生管理系统

1、myhead.h

c 复制代码
#ifndef __MYHEAD_H__
#define __MYHEAD_H__


#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

#define ERR_MSG(msg) do{perror(msg);printf("%d\n",__LINE__);return -1;}while(0)
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <time.h>
#include <pwd.h>
#include <grp.h>
#include <sys/wait.h>
#include <pthread.h>
#include <semaphore.h>
#include <signal.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <sys/msg.h>
#include <sqlite3.h>
#endif

2、代码

c 复制代码
#include <myhead.h>
int do_add(sqlite3 *ppDb)
{
	int add_numb;
	char add_name[20];
	char add_sex[10];
	double add_scare;
	printf("输入学号:");
	scanf("%d",&add_numb);
	printf("输入姓名:");
	scanf("%s",add_name);
	printf("输入性别:");
	scanf("%s",add_sex);
	printf("输入成绩:");
	scanf("%lf",&add_scare);
	char sql[128]={};
	sprintf(sql,"insert into STUINFO values(%d,\"%s\",\"%s\",%lf);",add_numb,add_name,add_sex,add_scare);
	char *errmsg=NULL;
	if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
	{
		printf("%d\t%s\n",__LINE__,errmsg);
		sqlite3_free(errmsg);
		return -1;
	}
	printf("添加学生信息成功\n");
	return 0;
}
int do_delete(sqlite3 *ppDb)
{
	int delate_numb;
	printf("输入要删除的学号:");
	scanf("%d",&delate_numb);
	char sql[128]={};
	sprintf(sql,"delete from STUINFO where numb==%d",delate_numb);
	char *errmsg=NULL;
	if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
	{
		printf("%d\t%s\n",__LINE__,errmsg);
		sqlite3_free(errmsg);
		return -1;
	}
	printf("删除学生信息成功\n");
	return 0;

}
int do_update(sqlite3 *ppDb)//修改学生信息
{
	int update_numb;
	char update_name[20];
	char update_sex[10];
	double update_scare;
	printf("输入要修改学号:");
	scanf("%d",&update_numb);
	printf("输入修改后的姓名:");
	scanf("%s",update_name);
	printf("输入修改后的性别:");
	scanf("%s",update_sex);
	printf("输入修改后的成绩:");
	scanf("%lf",&update_scare);
	char sql[128]={};
	sprintf(sql,"update STUINFO set name=\"%s\",sex=\"%s\",scare=%lf where numb=%d;",update_name,update_sex,update_scare,update_numb);
	char *errmsg=NULL;
	if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
	{
		printf("%d\t%s\n",__LINE__,errmsg);
		sqlite3_free(errmsg);
		return -1;
	}
	printf("修改学生信息成功\n");
	return 0;
}
int call_back(void *arg,int clos,char **msgtxt,char **msgheader)
{
	if(*((int *)arg)==0)
	{
		*((int *)arg)=1;
		for(int i=0;i<clos;i++)
		{
			printf("%s\t",*(msgheader+i));
		}
		printf("\n");
	}
	for(int i=0;i<clos;i++)
	{
		printf("%s\t",*(msgtxt+i));
	}
	printf("\n");
	return 0;
}
int do_search(sqlite3 *ppDb)
{
	char sql[128]="select * from STUINFO;";
	char *errmsg=NULL;
	int flag=0;
	if(sqlite3_exec(ppDb,sql,call_back,&flag,&errmsg)!=SQLITE_OK)
	{
		printf("%d\t%s\n",__LINE__,errmsg);
		sqlite3_free(errmsg);
		return -1;
	}
	return 0;


}
int main(int argc, const char *argv[])
{
	//创建库
	sqlite3 *ppDb=NULL;
	if(sqlite3_open("./db.db",&ppDb)!=SQLITE_OK)
	{
		printf("sqlist3_open error\n");
		return -1;
	}
	//创建表格
	char *sql="create table if not exists STUINFO(numb int,name char,sex char,scare double);";
	char *errmsg=NULL;
	if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
	{
		printf("%d\t%s\n",__LINE__,errmsg);
		sqlite3_free(errmsg);
		return -1;
	}
	int nume=-1;
	while(1)
	{
		system("clear");
		printf("*************学生管理系统***************\n");
		printf("***********1、添加学生信息**************\n");
		printf("***********2、删除学生信息**************\n");
		printf("***********3、修改学生信息**************\n");
		printf("***********4、查找学生信息**************\n");
		printf("***********0、退出管理系统**************\n");
		printf("输入选项:");
		scanf("%d",&nume);
		getchar();
		switch(nume)
		{
		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);
		}
		while(getchar()!='\n');
	}
	sqlite3_close(ppDb);
	return 0;
}

三、牛客网刷题