当前位置: 首页 > news >正文

数据库编程--完成简单的信息登录系统+思维导图

以下是使用数据库完成简单的商品信息录入系统

#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;
}


文章转载自:

http://7d91Eyjg.pqktp.cn
http://HfG0p9PB.pqktp.cn
http://1VGS0Qr7.pqktp.cn
http://yLBjWTf8.pqktp.cn
http://8yuJxOG0.pqktp.cn
http://DapXOlPi.pqktp.cn
http://DeN5WSzj.pqktp.cn
http://pBgTak9W.pqktp.cn
http://5AkvzWgv.pqktp.cn
http://a4NWl4bc.pqktp.cn
http://qGSZQ6VS.pqktp.cn
http://DVPP9HDA.pqktp.cn
http://pZXttsqd.pqktp.cn
http://UzGm4L1j.pqktp.cn
http://7Qp3ixyV.pqktp.cn
http://9rnKOKgd.pqktp.cn
http://mr45bPAg.pqktp.cn
http://dYI8tH4w.pqktp.cn
http://8fbiR2At.pqktp.cn
http://fy8cZybf.pqktp.cn
http://R1K9Vtjk.pqktp.cn
http://MkPUXBqJ.pqktp.cn
http://seLVM9Zv.pqktp.cn
http://hxCUAERQ.pqktp.cn
http://k04dPOLN.pqktp.cn
http://ZZm3tebn.pqktp.cn
http://fcap4EGT.pqktp.cn
http://Xr9jw92F.pqktp.cn
http://qQedP7UU.pqktp.cn
http://lpxVBNCf.pqktp.cn
http://www.dtcms.com/a/384342.html

相关文章:

  • Spring Boot 深入剖析:SpringApplicationRunListener
  • 【新手指南】解析Laf.run上的GET API接口
  • 如何批量删除 iPhone/iPad 上的照片 [7 种方法
  • Spring Boot 日志体系全面解析:从 SLF4J 到 Logback、Log4j2 与 Lombok 超详细!!
  • springboot创建请求处理
  • 08-Redis 字符串类型全解析:从命令实操到业务场景落地
  • 学习海康VisionMaster之字符缺陷检测
  • CAD画图:002软件界面操作
  • 解锁全球业务潜能:AWS全球网络加速解决方案深度解析
  • HTTPS Everywhere 是什么?HTTPS 插件作用、iOS 抓包失败原因解析与常见抓包工具对比
  • 【C++】STL详解(七)—stack和queue的介绍及使用
  • 20250912在荣品RD-RK3588-MID开发板的Android13系统下拿掉卡迪屏的reset引脚的下拉复位波形
  • 在线图书借阅平台的设计与实现 —— 基于飞算JavaAI的实战开发全流程与优化实践
  • Git : 分支管理和远程仓库
  • 当传统金融遇上AI智能:AIStock系统深度技术解析
  • 大数据如何捕捉你的爱好?如何实现跨站用户行为分析?
  • 用OpenCV CSRT实现实时目标跟踪
  • 13.Linux OpenSSH 服务管理
  • 微算法科技(NASDAQ: MLGO)研发基于量子密钥图像的量子图像加密算法,提供更高安全性的图像保护方案
  • LAMP 环境部署
  • Java程序设计:Eclipse 安装和使用
  • ZooKeeper 集群高可用配置指南
  • 在天嵌 TQ3568 (Debian) 上配置并添加打印机教程
  • pcl封装10 get_area_form_boundary计算平面点云面积
  • 突破局域网限制:MongoDB远程管理新体验
  • C++学习:map/set源码剖析+利用红黑树封装map/set
  • HTML开发工具有哪些?常用HTML编辑器推荐、HTML开发工具对比与HTML调试工具实战应用
  • Redis篇章3:Redis 企业级缓存难题全解--预热、雪崩、击穿、穿透一网打尽
  • 什么区块链(Blockchain)?Rust的区块链的例子
  • LangChain4J-(5)-记忆缓存与持久化