利用c语言通过sqlite3实现数据库增删改查:
#include<myhead.h>
int do_add(sqlite3 * ppDb)
{
char sql_insert[128]="insert into worker values ";
char info[500]="";
printf("请输入要添加的员工信息:\n");
scanf("%s",info);
char *errmsg=NULL;//存放执行sql语句的错误信息
if(sqlite3_exec(ppDb,strcat(sql_insert,info),NULL,NULL,&errmsg)!=SQLITE_OK)
{
printf("exec error:%s\n",errmsg);
sqlite3_free(errmsg);
errmsg=NULL;
return -1;
}else
{
printf("员工信息添加成功\n");
}
}
int do_delete(sqlite3 * ppDb)
{
char sql_del[128]="delete from worker where numb=";
char id[500]="";
printf("请输入要删除的员工工号:\n");
scanf("%s",id);
char *errmsg=NULL;//存放执行sql语句的错误信息
if(sqlite3_exec(ppDb,strcat(sql_del,id),NULL,NULL,&errmsg)!=SQLITE_OK)
{
printf("exec error:%s\n",errmsg);
sqlite3_free(errmsg);
errmsg=NULL;
return -1;
}else
{printf("员工信息删除成功\n");
}
}
int do_update(sqlite3 * ppDb)
{
char sql_update[128]="update worker set ";
char ch[500]="";
printf("请输入要修改的字段和修改后的值:\n");
scanf("%s",ch);
getchar();
char con[10]=" where ";
char c[10]="";
printf("请输入限制条件\n");
scanf("%s",c);
getchar();
char *errmsg=NULL;//存放执行sql语句的错误信息
if(sqlite3_exec(ppDb,strcat(strcat(strcat(sql_update,ch),con),c),NULL,NULL,&errmsg)!=SQLITE_OK)
{
printf("exec error:%s\n",errmsg);
sqlite3_free(errmsg);
errmsg=NULL;
return -1;
}else
{printf("员工信息更新成功\n");
}
}
int do_search(sqlite3 * ppDb)
{
char sql_search[128]="select * from worker where numb=";
char con[500]="";
printf("请输入查找的员工工号:\n");
scanf("%s",con);
char *errmsg=NULL;//存放执行sql语句的错误信息
if(sqlite3_exec(ppDb,strcat(sql_search,con),NULL,NULL,&errmsg)!=SQLITE_OK)
{
printf("exec error:%s\n",errmsg);
sqlite3_free(errmsg);
errmsg=NULL;
return -1;
}else
{printf("员工信息查找成功\n");
}
}
int main(int argc, const char *argv[])
{
//定义数据库句柄指针
sqlite3 *ppDb=NULL;
//打开数据库,如果数据库不存在则创建数据库
//将数据库句柄由参数2返回
if(sqlite3_open("./my1.db",&ppDb)!=SQLITE_OK)
{
printf("sqlite3_open error,errcode=%d,errmsg=%s\n",\
sqlite3_errcode(ppDb),sqlite3_errmsg(ppDb));
return -1;
}
printf("sqlite3_open success\n");
//创建数据表
//准备sql语句
char sql_create[128]="create table if not exists worker (numb int,name char,salary double)";
char *errmsg=NULL;//存放执行sql语句的错误信息
if(sqlite3_exec(ppDb,sql_create,NULL,NULL,&errmsg)!=SQLITE_OK)
{
printf("exec error:%s\n",errmsg);
sqlite3_free(errmsg);
errmsg=NULL;
return -1;
}
printf("员工信息表创建成功\n");
int menu=-1;
for(;;)
{
// system("clear");
printf("1.添加\n 2.删除\n 3.更新\n 4.查找\n 0.退出\n");
scanf("%d",&menu);
switch(menu)
{
case 1:
{
do_add(ppDb);
}
break;
case 2:
{
do_delete(ppDb);
}
break;
case 3:
{
do_update(ppDb);
}
break;
case 4:
{
do_search(ppDb);
}
break;
case 0:goto END;
default:printf("cd error\n");
}
}
END:
sqlite3_close(ppDb);
return 0;
}