sqlite3---维护命令、回调函数

发布于:2025-08-01 ⋅ 阅读:(21) ⋅ 点赞:(0)

一、维护命令

1.数据的导出

1.1用法

sqlite3 xxx.db .dump > xxx.sql
//将数据库名称为xxx的数据库整体导出到脚本中。

1.2代码示例

2.数据的导入

2.1用法

sqlite3 xxx.db < xxx.sql

2.2代码示例

3.可视化工具安装

sudo apt-get install sqlitebrowser 

二、回调函数

1.输出一次标题输出一次内容

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

//此时为输出一次标题输出一次内容
int show(void *arg, int clo, char **result, char **title)
{
  for (int i = 0; i < clo; i++)
     {
       printf("%s\t", title[i]);
    }
   printf("\n");
for (int i = 0; i < clo; i++)
     {
     printf("%s\t", result[i]);
     }
   printf("\n");
   return 0;
}

int main(int argc, char **argv)
{
  // int sqlite3_open( const char *filename, sqlite3 **ppDb);
  sqlite3 *db = NULL;
  char *errmsg;
  int ret = sqlite3_open("./aaa.db", &db);
  if (SQLITE_OK != ret)
    {
      //不能使用perror
      fprintf(stderr, "open db error:%s\n", sqlite3_errstr(ret));
      // 或者使用fprintf(stderr,"open db error:%s\n",sqlite3_errmsg(db));
      sqlite3_close(db);
      return 1;
    }
  char sql_cmd[512] = "select * from user1";
  //此处show为回调函数
  ret = sqlite3_exec(db, sql_cmd, show, NULL, &errmsg);
  if (SQLITE_OK != ret)
    {
      //不能使用perror
      fprintf(stderr, "exec db:%s error:%s\n", sql_cmd, errmsg);
      sqlite3_free(errmsg);
      sqlite3_close(db);
      return 1;
    }
  sqlite3_close(db);

  // system("pause");
  return 0;
}

2.只输出一次标题

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

//只输出一次标题
int show(void *arg, int clo, char **result, char **title)
{
  static int flag = 0;
  if (0 == flag)
    {
      flag = 1;
      for (int i = 0; i < clo; i++)
        {
          printf("%s\t", title[i]);
        }
      printf("\n");
    }
  for (int i = 0; i < clo; i++)
    {
      printf("%s\t", result[i]);
    }
  printf("\n");
  return 0;
}

int main(int argc, char **argv)
{
  // int sqlite3_open( const char *filename, sqlite3 **ppDb);
  sqlite3 *db = NULL;
  char *errmsg;
  int ret = sqlite3_open("./aaa.db", &db);
  if (SQLITE_OK != ret)
    {
      //不能使用perror
      fprintf(stderr, "open db error:%s\n", sqlite3_errstr(ret));
      // 或者使用fprintf(stderr,"open db error:%s\n",sqlite3_errmsg(db));
      sqlite3_close(db);
      return 1;
    }
  char sql_cmd[512] = "select * from user1";
  //此处show为回调函数
  ret = sqlite3_exec(db, sql_cmd, show, NULL, &errmsg);
  if (SQLITE_OK != ret)
    {
      //不能使用perror
      fprintf(stderr, "exec db:%s error:%s\n", sql_cmd, errmsg);
      sqlite3_free(errmsg);
      sqlite3_close(db);
      return 1;
    }
  sqlite3_close(db);

  // system("pause");
  return 0;
}


网站公告

今日签到

点亮在社区的每一天
去签到