sqlite3---维护命令、回调函数
一、维护命令
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){//不能使用perrorfprintf(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){//不能使用perrorfprintf(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){//不能使用perrorfprintf(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){//不能使用perrorfprintf(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;
}