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

广西网站设计服务seo怎么优化方法

广西网站设计服务,seo怎么优化方法,邯郸网站建设渠道,建设银行网站用户名忘了怎么办用数据库函数完成数据的增删改查 增: 将要存储的信息录入到结构体中,再使用snprintf函数信息结合sqlite3命令语句使用sqlite3_exec函数完成插入。 int do_insert(sqlite3 *ppDb) {Worker Work;printf("输入插入的工号:");scanf("%d&qu…

用数据库函数完成数据的增删改查

增:

将要存储的信息录入到结构体中,再使用snprintf函数信息结合sqlite3命令语句使用sqlite3_exec函数完成插入。

int do_insert(sqlite3 *ppDb)
{Worker Work;printf("输入插入的工号:");scanf("%d",&Work.gh);printf("输入插入的姓名:");scanf("%s",Work.name);printf("输入插入的薪资:");scanf("%lf",&Work.salary);char *errmsg = NULL;char sqlite[100];snprintf(sqlite,sizeof(sqlite),"insert into Work values(%d,\"%s\",%lf);",Work.gh,Work.name,Work.salary);if(sqlite3_exec(ppDb,sqlite,NULL,NULL,&errmsg)!= 0)//实现插入一个工人信息{perror("sqlite3_exec");printf("错误码:%d错误信息:%s,错误行:%d\n",sqlite3_errcode(ppDb),errmsg,__LINE__);return -1;}return 0;
}

删:

根据输入的姓名来删除这个人的信息;原理和增操作一样,只需将snprintf函数中的字符串改成相应的sqlite3命令语句即可

int do_delete(sqlite3 *ppDb)
{char key[20];printf("输入要删除的姓名:");scanf("%s",key);getchar();char *errmsg = NULL;char sqlite[100];snprintf(sqlite,sizeof(sqlite),"delete from Work where name == \"%s\";",key);if(sqlite3_exec(ppDb,sqlite,NULL,NULL,&errmsg)!= 0)//实现输出工人信息{perror("sqlite3_exec");printf("错误码:%d错误信息:%s,错误行:%d\n",sqlite3_errcode(ppDb),errmsg,__LINE__);return -1;}printf("删除成功,输入5查看删除结果\n");return 0;
}

 改:

根据姓名更改相关信息,一次只能更改一项,所以使用了两次snprintf函数

int do_mod(sqlite3 *ppDb)
{char key[20];printf("输入要修改的姓名:");scanf("%s",key);getchar();Worker Work;printf("输入修改后的工号:");scanf("%d",&Work.gh);printf("输入修改后的薪资:");scanf("%lf",&Work.salary);char *errmsg = NULL;char sqlite[100];snprintf(sqlite,sizeof(sqlite),"update Work set gh = %d where name == \"%s\";",Work.gh,key);if(sqlite3_exec(ppDb,sqlite,NULL,NULL,&errmsg)!= 0)//实现插入一个工人信息{perror("sqlite3_exec");printf("错误码:%d错误信息:%s,错误行:%d\n",sqlite3_errcode(ppDb),errmsg,__LINE__);return -1;}snprintf(sqlite,sizeof(sqlite),"update Work set salary = %lf where name == \"%s\";",Work.salary,key);if(sqlite3_exec(ppDb,sqlite,NULL,NULL,&errmsg)!= 0)//实现插入一个工人信息{perror("sqlite3_exec");printf("错误码:%d错误信息:%s,错误行:%d\n",sqlite3_errcode(ppDb),errmsg,__LINE__);return -1;}printf("修改成功,输入5查看修改结果\n");return 0;
}

查:

前面过程都类似,在sqlite3_exec函数中加入callback回调函数,实现输出查找的信息

int callback(void *arg,int n,char **msgtext,char **msgtable)
{int i,j;char **a = msgtable;for(i = 0;i<2;i++){for(j = 0;j<n;j++){printf("%s\t",*(a++));}puts("");}return 0;
}
//查找一个工人的信息
int do_reseach(sqlite3 *ppDb)
{char key[20];printf("输入要查找的姓名:");scanf("%s",key);getchar();char *errmsg = NULL;char sqlite[100];snprintf(sqlite,sizeof(sqlite),"select * from Work where name == \"%s\";",key);if(sqlite3_exec(ppDb,sqlite,callback,NULL,&errmsg)!= 0)//实现查找一个工人信息{perror("sqlite3_exec");printf("错误码:%d错误信息:%s,错误行:%d\n",sqlite3_errcode(ppDb),errmsg,__LINE__);return -1;}return 0;
}

遍历:

和查找的操作类似,会出现一个问题:当我想把标题输出出来的时候,当输出完一个人的信息后这个标题又会重新输出一次。

这时想到可以在show_all中使用flag,这样就只能输出一次,但还是不行,还是会变;

又想到用static关键字,这样就不会改变flag了,但这样就只有第一次遍历可以有这个效果,后面就不会有列名;

既然static是将局部变量具有全局变量的效果,那就定义一个全局的flag变量

int show_all(void *arg,int n,char **msgtext,char **msgtable)
{int num = 0;for(int i = 0;i<n;i++){printf("%s\t",*(msgtable+i));}puts("");char **a = msgtext;while(*a != NULL){num++;printf("%s\t",*(a++));if(num%3 == 0){printf("\n");}}return 0;
}
//输出所以工人信息
int do_showall(sqlite3 *ppDb)
{char *errmsg = NULL;char sqlite[100] = "select * from Work;";if(sqlite3_exec(ppDb,sqlite,show_all,NULL,&errmsg)!= 0)//实现查找一个工人信息{perror("sqlite3_exec");printf("错误码:%d错误信息:%s,错误行:%d\n",sqlite3_errcode(ppDb),errmsg,__LINE__);return -1;}
}

定义全局变量后,如果在回调函数结束前将flag在重新改为1,那就白费功夫了,所以在do_showall函数结束前重新改为1.

int flag = 1;
int show_all(void *arg, int n, char **msgtext, char **msgtable)
{int num = 0;if (flag){for (int i = 0; i < n; i++){printf("%s\t", *(msgtable + i));}puts("");flag = 0;}char **a = msgtext;while (*a != NULL){num++;printf("%s\t", *(a++));if (num % 3 == 0){printf("\n");}}return 0;
}
// 输出所以工人信息
int do_showall(sqlite3 *ppDb)
{char *errmsg = NULL;char sqlite[100] = "select * from Work;";if (sqlite3_exec(ppDb, sqlite, show_all, NULL, &errmsg) != 0) // 实现查找一个工人信息{perror("sqlite3_exec");printf("错误码:%d错误信息:%s,错误行:%d\n", sqlite3_errcode(ppDb), errmsg, __LINE__);return -1;}flag = 1;return 0;
}

http://www.hkea.cn/news/46156/

相关文章:

  • 哪家网站建设专业快速建站教程
  • 坪山网站建设行业现状优化seo方案
  • 做网站需要架构师吗网站平台有哪些
  • 网站建设丿选择金手指15凡科建站官网
  • 可以做外国网站文章武汉企业seo推广
  • 天津网站建设公司最好太原做网站哪家好
  • 网站代下单怎么做百度指数数据分析平台入口
  • 淘宝做动效代码的网站seo的优化方向
  • 番禺建网站公司网站搜索工具
  • 安徽万振建设集团网站长春网站推广公司
  • 网站怎么制作 推广seo超级外链工具免费
  • 中小学网站建设探讨东莞seo整站优化火速
  • php是网站开发的语言吗企业网站的作用
  • 网站站外优化怎么做企业推广app
  • 拉趣网站是谁做的威海网站制作
  • 做宣传海报的网站百度导航2023年最新版
  • 湖南做网站 磐石网络windows优化大师官方免费
  • 制作网站的最新软件如何优化关键词的方法
  • 东莞工作招聘网最新招聘搜索 引擎优化
  • 宁波俄语网站建设免费发广告的平台有哪些
  • 郑州外贸网站建设及维护营销软件商城
  • 泉州百度关键词排名广州网站营销优化qq
  • 怎么做wep网站营销推广活动方案
  • 展示型网站php官方app下载安装
  • 嘉祥网站建设广东省自然资源厅
  • 忘记网站后台密码网站排名软件推荐
  • 怎么查公司网站有没有被收录火爆产品的推广文案
  • 绵阳网站建设 经开区网络教学平台
  • wordpress阅读量没改7个湖北seo网站推广策略
  • 网站建设成功案例方案找培训机构的平台