数据库写通讯录

写的一个简单的通讯录,主要自己比较low,感谢给我找错的亲们!

#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>
#include <string.h>


void create_table(sqlite3 *db);
void insert_record(sqlite3 *db);
void contact_list(sqlite3 *db);
//int displaycd(void *para, int ncolumn, char **columnvalue, char *columnname[]);
void search_contact();
void delete_contact();
void update_contact();
void Menu_Face();
void Menu();

int main()
{
 sqlite3 *db = NULL;

 int ret;

 ret = sqlite3_open("mmm.db",&db);
 create_table(db);

 while(1)
 {
  Menu(db);
 }

 sqlite3_close(db);
 return 0;
}
 
void Menu_Face()
{
 printf("====================================================================\n");
    printf("|                                                                  |\n");
    printf("|                               通讯录                             |\n");
    printf("|                                                                  |\n");
    printf("====================================================================\n");
    printf("*                                                                  *\n");
    printf("*                                                                  *\n");
    printf("*                            1.添加联系人                          *\n");
    printf("*                                                                  *\n");
    printf("*                            2.显示联系人                          *\n");
    printf("*                                                                  *\n");
    printf("*                            3.查询联系人                          *\n");
    printf("*                                                                  *\n");
    printf("*                            4.删除联系人                          *\n");
    printf("*                                                                  *\n");
    printf("*                            5.更新联系人                          *\n");
    printf("*                                                                  *\n");
    printf("*                            6.Exit                                *\n");
    printf("*                                                                  *\n");
    printf("==================================================================\n\n");
    printf("                 Please input order (1 - 6): ");
}

void Menu(sqlite3 *db)
{
    int ret;
    int order;

    system("clear");
    Menu_Face();
   
 scanf("%d", &order);
    getchar();

    switch(order)
    {
        case 1:
        {
            insert_record(db);
            printf("insert success!");
   getchar();
            Menu(db);
            break;
        }
        case 2:
        {
            contact_list(db);
   printf("inqure success!");
   getchar();
   Menu(db);
            break;
        }
        case 3:
        {
            search_contact(db);
   printf("search success!");
   getchar();
   Menu(db);
            break;
        }
        case 4:
        {
            delete_contact(db);
   printf("delete success!");
   getchar();
   Menu(db);
            break;
        }
        case 5:
        {
            update_contact(db);
   printf("updata success!");
   getchar();
   Menu(db);
   break;
        }
        case 6:
        {
            printf("Exit success!\n");
            exit(0);
            break;
        }
        default:
        {
            printf("Please input right order!\n\n");
            break;
        }
    }

}

//创建表
void create_table(sqlite3 *db)
{
 char *errmsg = NULL;
 char *sql = NULL;
    int ret;

    sql = "create table if not exists mytable (id integer primary key, name text, phone text, addr text);";
 ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg);

 if(ret != SQLITE_OK)
 {
  printf("insert table error: %s\n", errmsg);
 }
}


//添加联系人
void insert_record(sqlite3 *db)
{
 char sql[100];
 char *errmsg = NULL;
 int id;
 char name[20];
 char phone[15];
 char addr[30];

 system("clear");
 printf("insert Contact\n");

 printf("please insert id\n");
 scanf("%d",&id);
 getchar();

 printf("please insert name\n");
 scanf("%s",name);
 getchar();

 printf("please insert phone\n");
 scanf("%s",phone);
 getchar();
   
 printf("please insert addr\n");
 scanf("%s",addr);
 getchar();

 sprintf(sql, "insert into mytable values (%d, '%s', '%s', '%s' );", id, name, phone, addr);

 if(SQLITE_OK != sqlite3_exec(db, sql, NULL, NULL, &errmsg))
 {
  printf("insert record error: %s\n", errmsg);
 }
}

//显示联系人
void contact_list(sqlite3 *db)
{
 int nrow,ncolumn;
 char **azresult;
 char *sql;
 char *errmsg = NULL;
 int i;
 
 sql = "select * from mytable;";
 
 if(SQLITE_OK != sqlite3_get_table(db,sql,&azresult,&nrow,&ncolumn,&errmsg))
 {
  printf("contact failed: %s\n",errmsg);
  exit(-1);
 }

 printf("row:%d\n column: %d\n",nrow,ncolumn);
 printf("the result of querying is:\n");

 for(i = 0; i < (nrow + 1) *ncolumn; i++)
 {
  printf("%10s",azresult[i]);
  if((i + 1) % ncolumn == 0)
  {
   printf("\n");
  }
 }

 sqlite3_free_table(azresult);
}



//查询联系人
void search_contact(sqlite3 *db)
{
 char name[20];
 char sql[100];
    char *errmsg;
 int nrow,ncolumn;
 char **azresult;
 int i;

 int ret;

 system("clear");
 printf("search contact\n");
 
 printf("search name\n");
 scanf("%s", name);
 getchar();

 sprintf(sql, "select * from mytable where name = '%s'",name);
 

 if(SQLITE_OK != sqlite3_get_table(db, sql, &azresult, &nrow, &ncolumn, &errmsg))
 {
  printf("serach failed: %s\n", errmsg);
  exit(0);
 }
 
 for(i = 0; i < (nrow + 1) * ncolumn; i++)
 {
  printf("%10s", azresult[i]);
  if((i + 1) % ncolumn == 0)
  {
   printf("\n");
  }
 }

}

// 删除联系人
void delete_contact(sqlite3 *db)
{
 char sql[100];
 char name[20];
    char *errmsg;
 int ret;

 system("clear");
 printf("Delect name\n");

 scanf("%s", name);
 getchar();

 sprintf(sql, "delete from mytable where name = '%s'", name);
 ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg);

 if(ret != SQLITE_OK)
 {
  printf("delete contact error: %s\n", errmsg);
  exit(-1);
 }

}

void update_contact(sqlite3 *db)
{
 char sql[100];
 char name[20];
 char phone[15];
 char addr[30];
 char *errmsg = NULL;
// int id;
 int ret;

 system("clear");
 printf("Update contact\n");

 printf("name: ");
 scanf("%s", name);
 getchar();
 //sprintf(sql, "select *from addr where name = '%s'",name);
 //ret = sqlite3_exec(db, sql, contact_list , NULL, &errmsg );
 printf("new number:");
 scanf("%s", phone);
 getchar();

 printf("new addr:");
 scanf("%s",addr);
 getchar();

// sprintf(sql, "update  mytable values ('%s', '%s', '%s' );", name, phone, addr);
    sprintf(sql, "update mytable set phone = '%s' where name = '%s';",phone,name);
 
    sprintf(sql, "update mytable set addr = '%s' where name = '%s';",addr,name);
 
 ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg);

 if(ret != SQLITE_OK)
 {
  printf("updata table error: %s\n", errmsg);
  exit(-1);
 }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值