#include
#include
#include
static sqlite3 *db = NULL;
static char **Result = NULL;
static char *errmsg = NULL;
char name[20];
char age[20];
char phone[20];
char num[20];
int Row;
int ncolumn;
int i;
int j;
int print()
{
int num;
printf("==========================================\n");
printf("\n");
printf("|| 1)录入联系人 ||\n");
printf("|| 2)显示联系人 ||\n");
printf("|| 3)更新联系人 ||\n");
printf("|| 4)删除联系人 ||\n");
printf("|| 5)搜索联系人 ||\n");
printf("|| 6)退出系统 ||\n");
printf("\n");
printf("==========================================\n");
printf("请输入你想要执行的操作(1-6):");
scanf("%d",&num);
return num;
}
void insert()
{
int ret;
int flag = 1;
int i;
char sql[100];
while(flag)
{
printf("请输入需要添加的人数:");
scanf("%d",&ret);
for(i = 1;i <= ret;i++)
{
printf("ID:");
scanf("%s",num);
printf("姓名:");
scanf("%s",name);
printf("年龄:");
scanf("%s",age);
printf("电话:");
scanf("%s",phone);
getchar();
sprintf(sql,"insert into book (id,name,age,phone) values ('%s','%s','%s','%s' );",num,name,age,phone);
sqlite3_exec(db, sql, NULL, NULL, &errmsg);
/*
if(ret)
{
printf("insert record error :%s\n", errmsg);
exit (-1);
}
*/
}
printf("是否继续输入(Y(1) N(0)):");
scanf("%d",&flag);
}
}
void display()
{
int res;
res = sqlite3_get_table(db,".mode column",&Result,&Row,&ncolumn,&errmsg);
res = sqlite3_get_table(db,".head on",&Result,&Row,&ncolumn,&errmsg);
res = sqlite3_get_table(db,"select *from book order by name asc;",&Result,&Row,&ncolumn,&errmsg);
if(res)
{
printf("fail to exec database!\n");
}
for(i = 0;i <= Row;i++)
{
for(j = 0;j < ncolumn;j++)
{
printf("%8s |",Result[i*ncolumn+j]);
}
printf("\n");
}
printf("打印成功!\n");
}
int displaycb(void *para,int ncolumn,char **columnvalue,char *columnname[])
{
int i;
for(i = 0;i < ncolumn;i++)
{
printf("%s:%s\n",columnname[i],columnvalue[i]);
}
printf("========================\n");
return 0;
}
void update()
{
char sql[100];
int ret;
int ch;
int flag = 1;
char id[20];
char c_name[20];
char c_age[20];
char c_phone[20];
printf("你想要修改的联系人的姓名:");
scanf("%s",name);
sprintf(sql,"select *from book where name='%s';",name);
ret = sqlite3_exec(db,sql,displaycb,NULL,&errmsg);
if(ret)
{
printf("select error:%s\n",errmsg);
exit(-1);
}
while(flag)
{
printf("请选择需要修改项(ID(0),姓名(1),年龄(2),电话(3)):");
scanf("%d",&ch);
getchar();
if(ch == 0)
{
printf("将ID修改为:");
scanf("%s",&id);
sprintf(sql,"update book set ID='%s' where name='%s';",id,name);
sqlite3_exec(db,sql,NULL,NULL,&errmsg);
}
if(ch == 1)
{
printf("将姓名修改为:");
scanf("%s",&c_name);
sprintf(sql,"update book set name='%s' where name='%s';",c_name,name);
sqlite3_exec(db,sql,NULL,NULL,&errmsg);
}
if(ch == 2)
{
printf("将年龄修改为:");
scanf("%s",&c_age);
sprintf(sql,"update book set age='%s' where name='%s';",c_age,name);
sqlite3_exec(db,sql,NULL,NULL,&errmsg);
}
if(ch == 4)
{
printf("将电话修改为:");
scanf("%s",&c_phone);
sprintf(sql,"update book set c_phone='%s' where name='%s';",c_phone,name);
sqlite3_exec(db,sql,NULL,NULL,&errmsg);
}
printf("是否继续修改(Y(1) N(0)):");
scanf("%d",&flag);
}
}
void delete()
{
char sql[100];
int ret;
printf("请输入你想要删除的联系人的姓名:");
scanf("%s",name);
sprintf(sql,"select *from book where name='%s';",name);
ret = sqlite3_exec(db,sql,displaycb,NULL,&errmsg);
if(ret)
{
printf("select error:%s\n",errmsg);
exit(-1);
}
printf("请输入需要删除的联系人的ID:");
scanf("%s",num);
sprintf(sql,"delete from book where id='%s';",num);
ret = sqlite3_exec(db,sql,displaycb,NULL,&errmsg);
if(ret)
{
printf("delete error:%s\n",errmsg);
exit(-1);
}
printf("删除成功!\n");
}
void search(sqlite3 *db)
{
char sql[100];
int ret;
int ch;
int flag = 1;
while(flag)
{
printf("请输入需搜索的联系人的姓名:");
scanf("%s",name);
sprintf(sql,"select *from book where name='%s';",name);
ret = sqlite3_exec(db,sql,displaycb,NULL,&errmsg);
if(ret != SQLITE_OK)
{
printf("select error:%s\n",errmsg);
exit(-1);
}
printf("是否继续搜索?Y(1)|N(0)");
scanf("%d",&ch);
flag = ch;
}
}
int main()
{
int num;
int res ;
res = sqlite3_open("albumn.db",&db);
while(1)
{
num = print();
if(num ==1)
{
insert();
}
if(num == 2)
{
display();
}
if(num == 3)
{
update();
}
if(num == 4)
{
delete();
}
if(num == 5)
{
search(db);
}
if(num == 6)
{
exit(0);
}
}
//sqlite3_free_table(Result);
sqlite3_close(db);
return 0;
}