• 3.6作业


    作业要求:数据库操作的增、删、改

    程序代码:

    1. #include
    2. int main(int argc, const char *argv[])
    3. {
    4. //定义数据库句柄指针
    5. sqlite3 * ppDb = NULL;
    6. //打开数据库,如果数据库不存在,则创建数据库
    7. //将数据库句柄由参数2返回
    8. if(sqlite3_open("./stu.db",&ppDb) != 0)
    9. {
    10. printf("sqlite3_open error,errcode=%d,errmsg=%s\n",sqlite3_errcode(ppDb),sqlite3_errmsg(ppDb));
    11. return -1;
    12. }
    13. printf("sqlite3_open success\n");
    14. //创建数据表
    15. //1.准备sql语句
    16. char sql[128] ="create table if not exists worker(numb int ,name char,salary double)";
    17. char *errmsg = NULL; //存放执行sql语句中的错误信息
    18. if(sqlite3_exec(ppDb , sql , NULL , NULL , &errmsg) != SQLITE_OK)
    19. {
    20. printf("exec error : %s\n",errmsg);
    21. sqlite3_free(errmsg); //防止内存泄漏
    22. errmsg = NULL;
    23. return -1;
    24. }
    25. printf("员工信息表创建成功\n");
    26. int menu = -1; //菜单选项
    27. for(;;)
    28. {
    29. system("clear"); //清空之前的终端信息
    30. printf("\t\t======公司员工管理系统======\n");
    31. printf("\t\t======1.添加员工信息======\n");
    32. printf("\t\t======2.删除员工信息======\n");
    33. printf("\t\t======3.修改员工信息======\n");
    34. printf("\t\t======4.查询员工信息======\n");
    35. printf("\t\t======5.退出======\n");
    36. printf("请输入操作码:"); //提示并输入信息
    37. scanf("%d",&menu);
    38. getchar(); //吸收回车
    39. switch(menu)
    40. {
    41. case 1:
    42. {
    43. char ch[64];
    44. char *errmsg = NULL;
    45. printf("请按照格式输入: (numb,'name',salary)\n");
    46. fgets(ch,sizeof(ch),stdin);
    47. char buf[128] = "insert into worker values";
    48. strcat(buf,ch);
    49. if(sqlite3_exec(ppDb , buf , NULL , NULL , &errmsg) != SQLITE_OK)
    50. {
    51. printf("insert error : %s\n",errmsg);
    52. sqlite3_free(errmsg); //防止内存泄漏
    53. errmsg = NULL;
    54. return -1;
    55. }
    56. printf("员工信息添加成功\n");
    57. }break;
    58. case 2:
    59. {
    60. char ch[64];
    61. char *errmsg = NULL;
    62. printf("请按照格式输入: 'name'\n");
    63. fgets(ch,sizeof(ch),stdin);
    64. char buf[128] = "delete from worker where name=";
    65. strcat(buf,ch);
    66. if(sqlite3_exec(ppDb , buf , NULL , NULL , &errmsg) != SQLITE_OK)
    67. {
    68. printf("delete error : %s\n",errmsg);
    69. sqlite3_free(errmsg); //防止内存泄漏
    70. errmsg = NULL;
    71. return -1;
    72. }
    73. printf("员工信息删除成功\n");
    74. }break;
    75. case 3:
    76. {
    77. for(;;)
    78. {
    79. system("clear"); //清空之前的终端信息
    80. printf("\t\t======修改员工信息======\n");
    81. printf("\t\t======1.修改员工numb信息======\n");
    82. printf("\t\t======2.修改员工salary信息======\n");
    83. printf("\t\t======3.退出======\n");
    84. printf("请输入操作码:"); //提示并输入信息
    85. scanf("%d",&menu);
    86. getchar(); //吸收回车
    87. switch(menu)
    88. {
    89. case 1:
    90. {
    91. char ch[64];
    92. char *errmsg = NULL;
    93. printf("请按照格式输入:numb where name='name'\n");
    94. fgets(ch,sizeof(ch),stdin);
    95. char buf[128] = "update worker set numb=";
    96. strcat(buf,ch);
    97. if(sqlite3_exec(ppDb , buf , NULL , NULL , &errmsg) != SQLITE_OK)
    98. {
    99. printf("update error : %s\n",errmsg);
    100. sqlite3_free(errmsg); //防止内存泄漏
    101. errmsg = NULL;
    102. return -1;
    103. }
    104. printf("员工numb信息修改成功\n");
    105. }break;
    106. case 2:
    107. {
    108. char ch[64];
    109. char *errmsg = NULL;
    110. printf("请按照格式输入:salary where name='name'\n");
    111. fgets(ch,sizeof(ch),stdin);
    112. char buf[128] = "update worker set salary=";
    113. strcat(buf,ch);
    114. if(sqlite3_exec(ppDb , buf , NULL , NULL , &errmsg) != SQLITE_OK)
    115. {
    116. printf("update error : %s\n",errmsg);
    117. sqlite3_free(errmsg); //防止内存泄漏
    118. errmsg = NULL;
    119. return -1;
    120. }
    121. printf("员工salary信息修改成功\n");
    122. }break;
    123. case 3:
    124. goto end;
    125. }
    126. }
    127. }break;
    128. end:break;
    129. case 4:
    130. {
    131. //查找员工信息
    132. }break;
    133. case 5:
    134. goto END;
    135. default:printf("您输入的功能有误,请重新输入!!!\n");
    136. }
    137. printf("请输入任意键,按回车清屏\n");
    138. while(getchar() != '\n');
    139. }
    140. END:
    141. //关闭数据库
    142. sqlite3_close(ppDb);
    143. return 0;
    144. }

    运行结果:

    添加员工信息:

    删除员工信息:

    修改员工信息:

    总运行结果:

    课程总结:

  • 相关阅读:
    C++语言实现网络爬虫详细代码
    PysparkNote103---window滑窗
    【华为OD题库-009】食堂供餐-Java
    物联网世界的无线电报之MQTT详解
    NetCDF数据在ArcMap中的使用
    Java面试题(每天10题)-------连载(33)
    【gpts】学算法题[缺失的第一个正数](https://leetcode.cn/problems/first-missing-positive/)
    设计模式面试系列-03
    海康机器人工业相机IP设置方式
    [附源码]java毕业设计社区私家车位共享收费系统
  • 原文地址:https://blog.csdn.net/Demonlxl/article/details/136515726