如下图所示,函数首先打开两个数据库,然后获取两个数据库的版本信息。根据数据库各个表名称来打开相应的表,然后判断两个表的具体内容是否相同,如果不同的话则打印出该表名,如果用户选择打印具体内容的话,则分别打印两个表的具体内容(由于表的内容可能会比较多,且查看单个表内容的话使用SQLite软件看更直观,所以这个功能默认关闭)。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#include "sqlite3.h"
#include "database_table.h"
#define OK 0
#define ERROR -1
#define TRUE 1
#define FALSE 0
#define TABLE_START_STR "CREATE TABLE IF NOT EXISTS"
/**@brief 数据库查询返回结构
*/
typedef struct{
int rows; ///> 查询结果的行数
int column; ///> 查询结果的列数
char ** data; ///> 查询结果的数据,一维数组,先是列名,然后是数据
}QUERY_TABLE;
/**@brief 根据要查询的内容输入sql语句,返回要查询的数据集
* @param[in] DATABASE * db 数据库的连接句柄,不能为NULL
* @param[in] char *sql 要查询的sql语句,可以在数据库中正常运行的,不能为NULL
* @param[out] QUERY_TABLE *ds 返回的查询结果结构体
* @return int SQLITE_OK 查询获取成功; 其他都是失败
*/
int db_query_open_v2 (sqlite3 *db, const char *table_name, QUERY_TABLE *ds)
{
int ret =