数据库编程--完成简单的信息登录系统+思维导图
以下是使用数据库完成简单的商品信息录入系统
#include<myhead.h>
#include<stdio.h>
//定义添加商品信息函数
int insert_message(sqlite3 *ppDb)
{
int message_id;
char message_name[20];
double message_price;
printf("请输入要添加的商品序号:");
scanf("%d",&message_id);
printf("请输入要添加的商品名字:");
scanf("%s",message_name);
printf("请输入要添加的商品价格:");
scanf("%lf",&message_price);
//准备sql语句
char sql[128]="";
sprintf(sql,"insert into store values(%d,\"%s\",%.2lf)",\
message_id,message_name,message_price);
printf("%s",sql);
//执行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;
}
printf("添加成功\n");
return 0;
}
//定义删除函数、
int delete_message(sqlite3 *ppDb)
{
char message_name[20];
printf("请输入要删除的商品名字:");
scanf("%s",message_name);
//准备sql语句
char sql[128]="";
sprintf(sql,"delete from store where name=\"%s\"",message_name);
printf("%s",sql);
//执行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;
}
printf("删除成功\n");
return 0;
}
//定义修改商品信息函数
int update_message(sqlite3 *ppDb)
{
int message_id;
char message_name[20];
double message_price;
printf("请输入要修改的商品序号:");
scanf("%d", &message_id);
printf("请输入新的商品名字:");
scanf("%s", message_name);
printf("请输入新的商品价格:");
scanf("%lf", &message_price);
//准备sql语句
char sql[128] = "";
sprintf(sql, "update store set name=\"%s\", price=%.2lf where id=%d",
message_name, message_price, message_id);
printf("%s", sql);
//执行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;
}
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 select_message(sqlite3 *ppDb)
{
//1、准备sql语句
char *sql = "select * from store;";
//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) //从这一步开始用ppDb来操作数据库
{
printf("my.db open error errocode=%d,errmsg=%s\n",sqlite3_errcode(ppDb),sqlite3_errmsg(ppDb));
return -1;
}
//和IO操作相同打开数据库后可以对数据库进行操作了
//2.创建一个商店仓库管理表
//2.1准备SQl语句
char * sql = "create table if not exists store(id int primary key,name text not NULL,price 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)
{
printf("\t\t---------------------------------商店仓库管理系统-------------------------------\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("请输入您的操作:\n");
scanf("%d",&menu);
getchar();
//开始选择下一步操作
switch(menu)
{
case 1:
{
insert_message(ppDb);
}
break;
case 2:
{
delete_message(ppDb);
}
break;
case 3:
{
update_message(ppDb);
}
break;
case 4:
{
select_message(ppDb);
}
break;
case 0:exit(EXIT_SUCCESS);
default:printf("输入错误重新输入\n");
}
printf("按回车清屏\n");
while(getchar()!='\n');
}
//关闭数据库
sqlite3_close(ppDb);
return 0;
}