当前位置:   article > 正文

用sqlite3实现表的增删改查(个人学习记录)_sqlite 修改表

sqlite 修改表

目录

1.主功能

2.插入数据

3.删除数据

4.更新数据

4.查看表

主程序


1.主功能

void printf_init(sqlite3 *db)
{
    while(1)
    {
        printf("/***************************************************/\n");
        printf("/* 1.插入数据 2.删除数据 3.更新数据 4.查看表 5.退出*/\n");
        printf("/***************************************************/\n");
        printf("input data:");
        int cmd;
        scanf("%d",&cmd);
        getchar();
        if(cmd == 5)
        {
            sqlite3_close(db);
            exit(0);
        }
        switch(cmd)
        {
            case 1:insert_list(db);break;
            case 2:delete_list(db);break;
            case 3:update_list(db);break;
            case 4:select_list(db);break;
            default:printf("error\n");exit(0);
        }
    }
}
 

2.插入数据

void insert_list(sqlite3 *db)
{
    char sql[1024]={0};
    int id,age,ret;
    float score;
    char name[16]={0};
    char *errmsg;
    printf("input id:");
    scanf("%d",&id);
    getchar();
    printf("input name:");
    scanf("%s",name);
    getchar();
    printf("input age:");
    scanf("%d",&age);
    getchar();
    printf("input score:");
    scanf("%f",&score);
    getchar();

    sprintf(sql,"insert into stu values(%d,'%s',%d,%f);",id,name,age,score);
    ret = sqlite3_exec(db, sql,NULL,NULL,&errmsg);
    if(ret != 0)
    {
        printf("insert %s\n",errmsg);
    }else{
        //printf("insert success\n");
    }
}

3.删除数据

void delete_list(sqlite3 *db)
{
    int id,ret;
    char sql[1024]={0};
    char *errmsg;
    printf("input you want delete id:");
    scanf("%d",&id);
    getchar();
    ret = do_id(db,id);
    if(ret < 0)
    {
        return ;
    }
    sprintf(sql,"delete from stu where id = %d;",id);
    ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg);
    if(ret != 0)
    {
        printf("delete %s\n",errmsg);
        exit(0);
    }else
    {
        //printf("delete success\n");
    }
}

4.更新数据

void update_list(sqlite3 *db)
{
    int id,ret,cmd,flag;
    char sql[1024]={0};
    while(1)
    {
        printf("input you want update id:");
        scanf("%d",&id);
        getchar();
        flag = do_id(db,id);
        if(flag > 0)
        {
        printf("/*************************************************/\n");
        printf("/* set: 1.name     2.age     3.score     4.quit  */\n");
        printf("/*************************************************/\n");
        scanf("%d",&cmd);
        getchar();
        if(cmd == 4)
        {
            //printf("set quiting...\n");
            break;
        }
        switch(cmd)
        {
            case 1:set_updata_name(db,id);break;
            case 2:set_updata_age(db,id);break;
            case 3:set_updata_score(db,id);break;
            defalut:printf("error\n");
        }
        }
        else{
        break;
        }
    }
}

4.查看表

void select_list(sqlite3 *db)
{
    int id,ret,cmd;
    char *errmsg;
    char sql[1024]={0};

    while(1)
    {
        printf("/***********************************/\n");
        printf("/* 1.查看单个id  2.查看所有  3.退出*/\n");
        printf("/***********************************/\n");
        printf("input:");
        scanf("%d",&cmd);
        getchar();
        if(cmd == 3)
        {
            //printf("sqlect quiting...\n");
            break;
        }
        switch(cmd)
        {
            case 1:do_select_one(db);break;
            case 2:do_select_all(db);break;
            default:printf("select error...\n");break;
        }
    }
}

主程序

  1. #include <stdio.h>
  2. #include <sqlite3.h>
  3. #include <stdlib.h>
  4. #include <unistd.h>
  5. #define table "1_data.db"
  6. int do_id(sqlite3 *db,int id)
  7. {
  8. int num;
  9. char sql[1024]={0};
  10. char *errmsg;
  11. char *pzErrmsg;
  12. char **pazResult;
  13. int pnRow,pnColumn;
  14. sprintf(sql,"select * from stu;");
  15. if( sqlite3_get_table(db,sql,&pazResult,&pnRow,&pnColumn,&pzErrmsg) != 0)
  16. {
  17. printf("get_table:%s",pzErrmsg);
  18. }else
  19. {
  20. int flag=0;
  21. int i,j,ret;
  22. int index=pnColumn;
  23. for(i=0;i<pnRow;i++)
  24. {
  25. ret = atoi(pazResult[index]);
  26. for(j=0;j<pnColumn;j++)
  27. {
  28. if((ret == id) & (0==j))
  29. {
  30. flag=1;
  31. }
  32. index++;
  33. }
  34. }
  35. if(flag == 1)
  36. {
  37. return 1;
  38. }else
  39. {
  40. printf("id not exit...\n");
  41. return -1;
  42. }
  43. }
  44. }
  45. void insert_list(sqlite3 *db)
  46. {
  47. char sql[1024]={0};
  48. int id,age,ret;
  49. float score;
  50. char name[16]={0};
  51. char *errmsg;
  52. printf("input id:");
  53. scanf("%d",&id);
  54. getchar();
  55. printf("input name:");
  56. scanf("%s",name);
  57. getchar();
  58. printf("input age:");
  59. scanf("%d",&age);
  60. getchar();
  61. printf("input score:");
  62. scanf("%f",&score);
  63. getchar();
  64. sprintf(sql,"insert into stu values(%d,'%s',%d,%f);",id,name,age,score);
  65. ret = sqlite3_exec(db, sql,NULL,NULL,&errmsg);
  66. if(ret != 0)
  67. {
  68. printf("insert %s\n",errmsg);
  69. }else{
  70. //printf("insert success\n");
  71. }
  72. }
  73. void delete_list(sqlite3 *db)
  74. {
  75. int id,ret;
  76. char sql[1024]={0};
  77. char *errmsg;
  78. printf("input you want delete id:");
  79. scanf("%d",&id);
  80. getchar();
  81. ret = do_id(db,id);
  82. if(ret < 0)
  83. {
  84. return ;
  85. }
  86. sprintf(sql,"delete from stu where id = %d;",id);
  87. ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg);
  88. if(ret != 0)
  89. {
  90. printf("delete %s\n",errmsg);
  91. exit(0);
  92. }else
  93. {
  94. //printf("delete success\n");
  95. }
  96. }
  97. void do_select_one(sqlite3 *db)
  98. {
  99. int id,ret;
  100. char sql[1024]={0};
  101. char *errmsg;
  102. printf("input you want select id:");
  103. scanf("%d",&id);
  104. getchar();
  105. sprintf(sql,"select * from stu where id = %d",id);
  106. char *pzErrmsg;
  107. char **pazResult;
  108. int pnRow,pnColumn;
  109. if(sqlite3_get_table(db,sql,&pazResult,&pnRow,&pnColumn,&pzErrmsg) != 0)
  110. {
  111. printf("get_table:%s",pzErrmsg);
  112. }else
  113. {
  114. int i,j;
  115. int index=pnColumn;
  116. int num;
  117. int ret;
  118. int flag=0;
  119. for(i=0;i<pnRow;i++)
  120. {
  121. ret = atoi(pazResult[index]);
  122. for(j=0;j<pnColumn;j++)
  123. {
  124. if((ret == id) & (0==j))
  125. {
  126. flag=1;
  127. for(num=0;num<pnColumn;num++)
  128. {
  129. printf("%-8s ", pazResult[index]);
  130. index++;
  131. }
  132. }
  133. index++;
  134. }
  135. printf("\n");
  136. }
  137. if(flag == 0){
  138. printf("not select id...\n");
  139. }
  140. }
  141. }
  142. void do_select_all(sqlite3 *db)
  143. {
  144. int id,ret;
  145. char sql[1024]={0};
  146. char *errmsg;
  147. sprintf(sql,"select * from stu;");
  148. char *pzErrmsg;
  149. char **pazResult;
  150. int pnRow,pnColumn;
  151. if( sqlite3_get_table(db,sql,&pazResult,&pnRow,&pnColumn,&pzErrmsg) != 0)
  152. {
  153. printf("get_table:%s",pzErrmsg);
  154. }else
  155. {
  156. int i,j;
  157. int index=0;
  158. if((pnRow == 0) & (pnColumn ==0))
  159. {
  160. printf("id not exit...\n");
  161. return ;
  162. }
  163. for(i=0;i<=pnRow;i++)
  164. {
  165. for(j=0;j<pnColumn;j++)
  166. {
  167. printf("%-8s ",pazResult[index++]);
  168. }
  169. printf("\n");
  170. }
  171. }
  172. }
  173. void select_list(sqlite3 *db)
  174. {
  175. int id,ret,cmd;
  176. char *errmsg;
  177. char sql[1024]={0};
  178. while(1)
  179. {
  180. printf("/***********************************/\n");
  181. printf("/* 1.查看单个id 2.查看所有 3.退出*/\n");
  182. printf("/***********************************/\n");
  183. printf("input:");
  184. scanf("%d",&cmd);
  185. getchar();
  186. if(cmd == 3)
  187. {
  188. //printf("sqlect quiting...\n");
  189. break;
  190. }
  191. switch(cmd)
  192. {
  193. case 1:do_select_one(db);break;
  194. case 2:do_select_all(db);break;
  195. default:printf("select error...\n");break;
  196. }
  197. }
  198. }
  199. void set_updata_name(sqlite3 *db,int id)
  200. {
  201. char name[128]={0};
  202. int ret;
  203. char sql[1024]={0};
  204. char *errmsg;
  205. printf("set name:");
  206. scanf("%s", name);
  207. getchar();
  208. sprintf(sql,"update stu set name='%s' where id=%d;",name, id);
  209. ret = sqlite3_exec(db,sql,NULL,NULL,&errmsg);
  210. if(ret != 0)
  211. {
  212. printf("update name :%s\n",errmsg);
  213. exit(0);
  214. }else
  215. {
  216. //printf("update name success\n");
  217. }
  218. }
  219. void set_updata_age(sqlite3 *db,int id)
  220. {
  221. int age;
  222. int ret;
  223. char sql[1024]={0};
  224. char *errmsg;
  225. printf("set age:");
  226. scanf("%d",&age);
  227. getchar();
  228. sprintf(sql,"update stu set age = %d where id=%d;",age,id);
  229. ret = sqlite3_exec(db,sql,NULL,NULL,&errmsg);
  230. if(ret != 0)
  231. {
  232. printf("update:%s\n",errmsg);
  233. exit(0);
  234. }else
  235. {
  236. //printf("update age success\n");
  237. }
  238. }
  239. void set_updata_score(sqlite3 *db,int id)
  240. {
  241. float score;
  242. int ret;
  243. char sql[1024]={0};
  244. char *errmsg;
  245. int flag;
  246. printf("set score:");
  247. scanf("%f",&score);
  248. getchar();
  249. sprintf(sql,"update stu set score = %f where id=%d;",score,id);
  250. ret = sqlite3_exec(db,sql,NULL,NULL,&errmsg);
  251. if(ret != 0)
  252. {
  253. printf("update:%s\n",errmsg);
  254. exit(0);
  255. }else
  256. {
  257. //printf("update score success\n");
  258. }
  259. }
  260. void update_list(sqlite3 *db)
  261. {
  262. int id,ret,cmd,flag;
  263. char sql[1024]={0};
  264. while(1)
  265. {
  266. printf("input you want update id:");
  267. scanf("%d",&id);
  268. getchar();
  269. flag = do_id(db,id);
  270. if(flag > 0)
  271. {
  272. printf("/*************************************************/\n");
  273. printf("/* set: 1.name 2.age 3.score 4.quit */\n");
  274. printf("/*************************************************/\n");
  275. scanf("%d",&cmd);
  276. getchar();
  277. if(cmd == 4)
  278. {
  279. //printf("set quiting...\n");
  280. break;
  281. }
  282. switch(cmd)
  283. {
  284. case 1:set_updata_name(db,id);break;
  285. case 2:set_updata_age(db,id);break;
  286. case 3:set_updata_score(db,id);break;
  287. defalut:printf("error\n");
  288. }
  289. }
  290. else{
  291. break;
  292. }
  293. }
  294. }
  295. void printf_init(sqlite3 *db)
  296. {
  297. while(1)
  298. {
  299. printf("/***************************************************/\n");
  300. printf("/* 1.插入数据 2.删除数据 3.更新数据 4.查看表 5.退出*/\n");
  301. printf("/***************************************************/\n");
  302. printf("input data:");
  303. int cmd;
  304. scanf("%d",&cmd);
  305. getchar();
  306. if(cmd == 5)
  307. {
  308. //printf("quiting...\n");
  309. exit(0);
  310. }
  311. switch(cmd)
  312. {
  313. case 1:insert_list(db);break;
  314. case 2:delete_list(db);break;
  315. case 3:update_list(db);break;
  316. case 4:select_list(db);break;
  317. default:printf("error\n");exit(0);
  318. }
  319. }
  320. }
  321. int main(int argc,char *argv[])
  322. {
  323. sqlite3 *db;
  324. char sql[1024]={0};
  325. char table_name[32]={0};
  326. int ret = -1;
  327. ret = access(table, F_OK);
  328. if(ret == 0)
  329. {
  330. unlink(table);
  331. }
  332. ret = sqlite3_open(table, &db);
  333. if(ret != 0)
  334. {
  335. printf("open %s\n",sqlite3_errmsg(db));
  336. exit(0);
  337. }else{
  338. //printf("open %s success\n",table);
  339. }
  340. char *errmsg;
  341. ret = sqlite3_exec(db,"create table stu (id integer, name text, age integer, score integer);",NULL,NULL,&errmsg);
  342. if(ret != 0)
  343. {
  344. printf("create:%s\n",errmsg);
  345. exit(0);
  346. }else
  347. {
  348. //printf("create table stu success\n");
  349. }
  350. printf_init(db);
  351. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/490814
推荐阅读
相关标签
  

闽ICP备14008679号