一个简单的使用sqlite3数据库的电话薄,很简单适合初学者看看,而且里面并没有很多容错处理很容易看懂的。
#include<stdio.h>
include"sqlite3.h"
static int callback(void notused,int l,char v,char lname);
int seek(sqlite3 db);
int insert(sqlite3 db);
int replace(sqlite3 db);
int del(sqlite3 db);
int option(sqlite3 db);
int quit(sqlite3 db);
int main()
{
int num;
int rc;
struct sqlite3 db;
rc=sqlite3_open("sql.db",&db);
if(rc)
{
printf("成功打开数据库");
}
else printf("数据库打开失败");
num=option(db);
quit(db);
}
int option(sqlite3 db)
{
int num;
int rc;
printf("\t1.查询\n\t2.添加记录\n\t3.更新记录\n\t4.删除记录\n\t5.清屏\n\t6.创建表\n\t7.退出\n");
printf("请输入:");
scanf("%d",&num);
switch (num)
{
case 1:seek(db);
break;
case 2:rc=insert(db);
break;
case 3:replace(db);
break;
case 4:del(db);
break;
case 5:
{
system("cls");
option(db);
}
case 6:
{
rc=sqlite3_exec(db,"CREATE TABLE telbook(name,telnum)",0,0,NULL);
printf("%d\n",rc);
}
break;
case 7:{
printf("即将关闭\n");
quit(db);
}
break;
default:
{ printf("请选择\n");
option(db);
}
break;
}
}
int seek(sqlite3 db)
{
int num;
int rc;
char zSQL;
char sql_name[20],sql_telnum[11];
printf("\t1.根据名字查找\n\t2.根据电话查找\n\t3.显示所有\n\t4.回上级目录");
scanf("%d",&num);
switch (num)
{
case 1:
{
printf("请输入名字:");
scanf("%s",sql_name);
zSQL= sqlite3_mprintf("select from telbook where name='%q'", sql_name);
rc=sqlite3_exec(db,zSQL,callback,0,NULL);
sqlite3_free(zSQL);
}
break;
case 2:
{
printf("请输入电话");
scanf("%s",sql_telnum);
zSQL= sqlite3_mprintf("select from telbook where telnum='%q'", sql_telnum);
rc=sqlite3_exec(db,zSQL,callback,0,NULL);
sqlite3_free(zSQL);
}
break;
case 3:rc=sqlite3_exec(db,"select from telbook",callback,0,NULL);
break;
case 4:option(db);
break;
default :
{ printf("请选择要执行的操作\n");
option(db);
}
}
printf("%d\n",rc);
option(db);
}
int insert(sqlite3 db)
{
int rc;
char sql_name[20],sql_telnum[11];
printf("输入姓名和电话以空格分隔:");
scanf("%s %s",sql_name,sql_telnum);
char zSQL;
zSQL= sqlite3_mprintf("INSERT INTO telbook VALUES('%q','%q')", sql_name,sql_telnum);
rc=sqlite3_exec(db,zSQL,0,0,NULL);
sqlite3_free(zSQL);
printf("%d\n",rc);
option(db);
return 0;
}
int replace(sqlite3 db)
{
int rc;
char sql_name[20],sql_telnum[11];
printf("请输入名字和新电话号码:");
scanf("%s %s",sql_name,sql_telnum);
char zSQL;
zSQL= sqlite3_mprintf("update telbook set telnum='%q' where name='%q'", sql_telnum,sql_name);
rc=sqlite3_exec(db,zSQL,0,0,NULL);
sqlite3_free(zSQL);
printf("%d\n",rc);
option(db);
return 0;
}
int del(sqlite3 db)
{
int rc;
char sql_name[20],sql_telnum[11];
printf("请输入要删除的姓名:");
scanf("%s",sql_name);
char zSQL;
zSQL= sqlite3_mprintf("DELETE FROM telbook where name='%q'", sql_name);
rc=sqlite3_exec(db,zSQL,0,0,NULL);
sqlite3_free(zSQL);
printf("%d\n",rc);
option(db);
return 0;
}
int quit(sqlite3 db)
{ int rc;
rc=sqlite3_close(db);
if (rc)
{
printf("成功关闭数据库\n");
}
else printf("关闭失败\n");
system("pause");
exit(1);
}
static int callback(void notused,int l,char v,char lname)
{
int i;
for (i=0;i<l;i++)
{
printf("%s\t",v[i]);
}
printf("\n");
return 0;
}
</pre>
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。