基于sqlite3实现的简单通讯录程序(控制台)

前端之家收集整理的这篇文章主要介绍了基于sqlite3实现的简单通讯录程序(控制台)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

转自:http://www.jb51.cc/article/p-dtdaakpd-xq.html

感谢作者。。。

1. sqlite3 安装


1.1. 下载sqlite3源码
www.sqlite3.org
下载 sqlite-autoconf-3070701.tar.gz

1.2. 解压
将下载的 sqlite-autoconf-3070701.tar.gz 解压,得到sqlite-autoconf-3070701 文件
1.3. 编译源码(参照解压文件夹下的install文件)
$ cd sqlite-autoconf-3070701 #进入文件
$ ./configure
$ make
$ sudo make install #注意一定要root权限
1.4. 查看安装情况
在/usr/local/include 下:sqlite3.h sqlite3ext.h
在/usr/local/bin 下:sqlite3
在/usr/local/lib 下:pkgconfig(文件夹) libsqlite3.a libsqlite3.la
libsqlite3.so libsqlite3.so.0 libsqlite3.so.0.8.6
2. sqlite3 c编程 之 环境搭建(Codeblocks)
2.1. 新建 c project
打开codeblocks,File--> new --> project-->console application-->c
2.2. 引入库
project-->build options --> linker setting
在linker library 下点击 add, 选择 /usr/local/lib/libsqlite3.so 文件
2.3. 添加.h文件
在程序开头#include <sqlite3.h>
2.4. 至此环境搭建完成。
在程序中,就可以使用sqlite3的c语言接口了
如:sqlite3_open()

sqlite3_close()


3. 通讯录程序

一个简单的通讯录程序,主要是为了练手,熟悉Slqite3的使用。

数据库:contact.db,只有一张表info,保存联系人信息(姓名,年龄,关系,手机号)

程序中bug较多,但却涵盖了sqlite3的数据库常用操作:创建数据库、创建表、增、删、改、查等。

  1. /************************************************************************
  2. *名称:contact_using_sqlite3.c
  3. *功能:一个简单的通讯录程序,主要是为了练习sqlite3的使用
  4. *描述:使用sqlite3,建立数据库contact,其中有表一张
  5. info(namevarchar(10),agesmallint,relationvarchar(10),phonevarchar(11))
  6. 包括如下功能
  7. 1.查看通讯录
  8. 2.增加联系人
  9. 3.删除联系人
  10. 4.修改联系人信息
  11. 5.查找联系人
  12. *作者:JarvisChu
  13. *时间:2011-8-22
  14. *修订:2011-8-24,完成修改删除
  15. ************************************************************************/
  16. #include<stdio.h>
  17. #include<stdlib.h>
  18. #include<string.h>
  19. #include<sqlite3.h>
  20. sqlite3*db=NULL;//thedatabase
  21. //showthemenuonthescreen,andreturnuser'schoice
  22. intshowMenu(){
  23. intchoice=0;
  24. while(1){
  25. printf("*****************************************************\n");
  26. printf("Welcome\n");
  27. printf("1.DisplayAll2.AddContact\n");
  28. printf("3.DeleteContact4.AlterContact\n");
  29. printf("5.FindContact\n");
  30. printf("Yourchoiceis:");
  31. scanf("%d",&choice);
  32. if(choice==1||choice==2||\
  33. choice==3||choice==4||\
  34. choice==5){
  35. returnchoice;
  36. }
  37. else{
  38. printf("Wrong!Again!\n");
  39. }
  40. return0;
  41. //showallrecordsindb
  42. voiddisplayAll(){
  43. inti=0;
  44. intj=0;
  45. intindex=0;
  46. intret=0;
  47. introw=0;
  48. intcolumn=0;
  49. char*sql=NULL;
  50. char**resultSet=NULL;//storethequeryresult
  51. sql=(char*)malloc(sizeof(char)*20);
  52. strcpy(sql,"select*frominfo;");
  53. ret=sqlite3_get_table(db,sql,&resultSet,&row,&column,0);
  54. if(ret!=sqlITE_OK){
  55. fprintf(stderr,"selectrecordserr\n");
  56. printf("Thereare%dContact:\n",row);
  57. index=0;
  58. for(i=0;i<=row;i++){
  59. for(j=0;j<column;j++){
  60. printf("%-11s",resultSet[index++]);
  61. printf("\n");
  62. sqlite3_free_table(resultSet);
  63. free(sql);
  64. //addcontact
  65. voidaddContact(){
  66. char*name=NULL;
  67. intage=0;
  68. char*relation=NULL;
  69. char*phone=NULL;
  70. name=(char)*10);
  71. relation=(char)*10);
  72. phone=(char)*12);
  73. char)*64);
  74. printf("input(nameagerelationphone):");
  75. scanf("%s%d%s%s",name,&age,relation,phone);
  76. //printf("%s,%d,%s,%s\n",age,phone);
  77. sprintf(sql,"insertintoinfovalues('%s',%d,'%s','%s');",0); background-color:inherit">//printf("%s\n",sql);
  78. ret=sqlite3_exec(db,108); list-style:decimal-leading-zero outside; color:inherit; line-height:17.600000381469727px; margin:0px!important; padding:0px 3px 0px 10px!important"> printf("Failed!\n");
  79. else{
  80. printf("ok!\n");
  81. free(name);
  82. free(relation);
  83. free(phone);
  84. free(sql);
  85. //findContact
  86. voidfindContact(){
  87. inti,j,index;
  88. char*sql=NULL;
  89. char**resultSet=NULL;
  90. printf("Inputthenameyouwanttofind:");
  91. scanf("%s",name);
  92. sql=(char)*64);
  93. sprintf(sql,"select*frominfowherename='%s'",name);
  94. ret=sqlite3_get_table(db,0);
  95. if(ret!=sqlITE_OK){
  96. fprintf(stderr,"selecterr:%s\n",sqlite3_errmsg(db));
  97. return;
  98. if(row>0){
  99. for(i=0;i<=row;i++){
  100. for(j=0;j<column;j++){
  101. printf("%-11s",resultSet[index++]);
  102. printf("\n");
  103. printf("nosuchperson!\n");
  104. //alertContact()
  105. voidalterContact(){
  106. //first,findthecontactinfotobealtered.
  107. intret=0;
  108. introw=0;
  109. intcolumn=0;
  110. char*relation=NULL;
  111. char*phone=NULL;
  112. printf("Inputthenameyouwanttoalter:");
  113. char)*128);
  114. //exist,thenalter
  115. printf("inputthenewdata(agerelationphone):");
  116. scanf("%d%s%s",phone);
  117. //printf("%d,%s,%s\n",phone);
  118. "updateinfosetage=%d,relation='%s',phone='%s'wherename='%s';",phone,sql);
  119. ret=sqlite3_exec(db,248); line-height:17.600000381469727px; margin:0px!important; padding:0px 3px 0px 10px!important"> printf("Failed!\n");
  120. printf("ok!\n");
  121. //deleteContact
  122. voiddeleteContact(){
  123. name=( printf("Inputthenameofcontactyouwanttodelete:");
  124. scanf("%s","deletefrominfowherename='%s';",0); background-color:inherit">//tobesimple,therewillbenowarningifthecontactdoesnotexist
  125. printf("deleteerr:%s",sqlite3_errmsg(db));
  126. printf("ok!");
  127. free(name);
  128. intmain()
  129. {
  130. intch=0;
  131. char*errmsg=NULL;
  132. //openthedbifexistorcreateit
  133. ret=sqlite3_open("contact.db",&db);
  134. if(ret){
  135. "Cannotopendatabase:%s\n",108); list-style:decimal-leading-zero outside; color:inherit; line-height:17.600000381469727px; margin:0px!important; padding:0px 3px 0px 10px!important"> sqlite3_close(db);
  136. exit(1);
  137. printf("Opendatabasesuccessfully...\n");
  138. //createthetableinfoifnotexists
  139. char)*128);//
  140. //strcpy(sql,);
  141. //printf("Copysqlsuccessfully\n");
  142. ifnotexistsinfo(\
  143. namevarchar(10)primarykey,\
  144. agesmallint,\
  145. relationvarchar(10),248); line-height:17.600000381469727px; margin:0px!important; padding:0px 3px 0px 10px!important"> phonevarchar(11));",&errmsg);
  146. //printf("Createtableerror\n");
  147. "Createtableerr:%s\n",0); background-color:inherit">//printf("Createtablesuccessfully\n");
  148. //insertsomeinitialrecords,
  149. //itwillcauseaerrifnotthefristtime,butthatdoesnotmatter
  150. "insertintoinfovalues('zhu',22,'本人','15109217871');");
  151. "Insertrecorderr:%s\n",0); background-color:inherit">//printf("Insertrecordsuccessfully\n");
  152. //mainmenu
  153. choice=showMenu();//showthemenuandgettheuser'schoose
  154. switch(choice){
  155. case1:
  156. displayAll();break;
  157. case2:
  158. addContact();
  159. break;
  160. case3:
  161. deleteContact();
  162. case4:
  163. alterContact();
  164. case5:
  165. findContact();
  166. default:
  167. //ifbacktomainmenuornot
  168. printf("\nBacktoMenu1(yes)/0(no)?");
  169. scanf("%d",&ch);
  170. if(ch==0){
  171. //printf("\33[2J");
  172. system("clear");
  173. }
原文链接:https://www.f2er.com/sqlite/201199.html

猜你在找的Sqlite相关文章