| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
wn25
9年前发布

C++操作sqlite3数据库示例代码

一个简单的使用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;  }