|
@@ -12,13 +12,17 @@
|
|
|
|
|
|
|
|
#define TOTAL_COUNT 60//统计总数
|
|
#define TOTAL_COUNT 60//统计总数
|
|
|
|
|
|
|
|
|
|
+enum{
|
|
|
|
|
+ DB_MIN=0,
|
|
|
|
|
+ DB_MAX,
|
|
|
|
|
+};
|
|
|
|
|
|
|
|
typedef struct {
|
|
typedef struct {
|
|
|
sqlite3 *db;
|
|
sqlite3 *db;
|
|
|
pthread_mutex_t mutex;
|
|
pthread_mutex_t mutex;
|
|
|
}sql_handle_t;
|
|
}sql_handle_t;
|
|
|
static sql_handle_t sqlHandle={0};
|
|
static sql_handle_t sqlHandle={0};
|
|
|
-
|
|
|
|
|
|
|
+static int overwrite_flag=0;
|
|
|
|
|
|
|
|
|
|
|
|
|
static int get_count(sqlite3 *db, char *table)
|
|
static int get_count(sqlite3 *db, char *table)
|
|
@@ -42,6 +46,33 @@ static int get_count(sqlite3 *db, char *table)
|
|
|
|
|
|
|
|
return count;
|
|
return count;
|
|
|
}
|
|
}
|
|
|
|
|
+static int get_key(sqlite3 *db, char *table, char *key, int mm)
|
|
|
|
|
+{
|
|
|
|
|
+ int r,id=-1;
|
|
|
|
|
+ char temp[1024];
|
|
|
|
|
+ sqlite3_stmt *stmt=NULL;
|
|
|
|
|
+
|
|
|
|
|
+ if(mm==DB_MIN) {
|
|
|
|
|
+ sprintf(temp, "SELECT MIN(%s) FROM %s;", key, table);
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ sprintf(temp, "SELECT MAX(%s) FROM %s;", key, table);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ r = sqlite3_prepare_v2(db, temp, -1, &stmt, 0);
|
|
|
|
|
+ if (r != SQLITE_OK) {
|
|
|
|
|
+ log_e("___get_extr_key, sqlite3_prepare_v2 failed, %s\n", sqlite3_errmsg(db));
|
|
|
|
|
+ return -1;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ while (sqlite3_step(stmt) == SQLITE_ROW) {
|
|
|
|
|
+ id = sqlite3_column_int(stmt, 0);
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ sqlite3_finalize(stmt);
|
|
|
|
|
+
|
|
|
|
|
+ return id;
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -59,12 +90,11 @@ int sqlite_init(sqlite3** db,pthread_mutex_t* pDBMutex, const char* daba_name)
|
|
|
log_d("DB Mutex init has failed\n");
|
|
log_d("DB Mutex init has failed\n");
|
|
|
return -1;
|
|
return -1;
|
|
|
}
|
|
}
|
|
|
- //paras_load(); //通过文件加载配置参数
|
|
|
|
|
|
|
|
|
|
ret = sqlite3_open(daba_name,db);
|
|
ret = sqlite3_open(daba_name,db);
|
|
|
if(ret != SQLITE_OK)
|
|
if(ret != SQLITE_OK)
|
|
|
return -1 ;
|
|
return -1 ;
|
|
|
- char SetData[]="PRAGMA cache_size = 0;";
|
|
|
|
|
|
|
+ char SetData[]="PRAGMA cache_size = 0; VACUUM;";
|
|
|
ret = sqlite3_exec(*db,SetData,NULL,NULL,&errorMsg);
|
|
ret = sqlite3_exec(*db,SetData,NULL,NULL,&errorMsg);
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
@@ -309,6 +339,7 @@ int dev_change_last_Index(sqlite3 *db,int* nIndex,int nDeleteNumber,char* tableN
|
|
|
return -1 ;
|
|
return -1 ;
|
|
|
}
|
|
}
|
|
|
sqlite3_free_table(pResult);
|
|
sqlite3_free_table(pResult);
|
|
|
|
|
+ dev_sql_VACCUM(db);
|
|
|
|
|
|
|
|
sprintf(select_sql,"UPDATE %s SET product_Index = product_Index - %d;",tableName,nDeleteNumber);
|
|
sprintf(select_sql,"UPDATE %s SET product_Index = product_Index - %d;",tableName,nDeleteNumber);
|
|
|
res = sqlite3_get_table(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
|
|
res = sqlite3_get_table(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
|
|
@@ -319,13 +350,14 @@ int dev_change_last_Index(sqlite3 *db,int* nIndex,int nDeleteNumber,char* tableN
|
|
|
}
|
|
}
|
|
|
*nIndex-=nDeleteNumber;
|
|
*nIndex-=nDeleteNumber;
|
|
|
sqlite3_free_table(pResult);
|
|
sqlite3_free_table(pResult);
|
|
|
|
|
+
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
|
/// @brief 插入一条电源监控信息
|
|
/// @brief 插入一条电源监控信息
|
|
|
/// @param db
|
|
/// @param db
|
|
|
/// @param _globalPowerChnInfo
|
|
/// @param _globalPowerChnInfo
|
|
|
/// @return
|
|
/// @return
|
|
|
-int dev_insert_power_info(sqlite3 *db,GlobalPowerInfo* _globalPowerChnInfo,int* nIndex, int overwrite)
|
|
|
|
|
|
|
+int dev_insert_power_info(sqlite3 *db,GlobalPowerInfo* _globalPowerChnInfo,int* nIndex)
|
|
|
{
|
|
{
|
|
|
int res ;
|
|
int res ;
|
|
|
char select_sql[1024] = {0};
|
|
char select_sql[1024] = {0};
|
|
@@ -337,7 +369,7 @@ int dev_insert_power_info(sqlite3 *db,GlobalPowerInfo* _globalPowerChnInfo,int*
|
|
|
char *table="Table_PowerInfo";
|
|
char *table="Table_PowerInfo";
|
|
|
GlobalPowerInfo *pInfo=_globalPowerChnInfo;
|
|
GlobalPowerInfo *pInfo=_globalPowerChnInfo;
|
|
|
|
|
|
|
|
- if(overwrite) {
|
|
|
|
|
|
|
+ if(overwrite_flag) {
|
|
|
sprintf(select_sql,"UPDATE %s SET product_Index=%d,product_id=%d,product_ch_id=%d,product_ch_status=%d,"
|
|
sprintf(select_sql,"UPDATE %s SET product_Index=%d,product_id=%d,product_ch_id=%d,product_ch_status=%d,"
|
|
|
"product_ch_voltage=%.2f,product_ch_current=%.2f,product_ch_power=%.2f,product_ch_power_freq=%.2f,"
|
|
"product_ch_voltage=%.2f,product_ch_current=%.2f,product_ch_power=%.2f,product_ch_power_freq=%.2f,"
|
|
|
"product_ch_consumption=%.2f,product_ch_power_factor=%.2f,product_samp_time='%s' "
|
|
"product_ch_consumption=%.2f,product_ch_power_factor=%.2f,product_samp_time='%s' "
|
|
@@ -613,8 +645,8 @@ int dev_delete_power_info_all(sqlite3 *db)
|
|
|
log_e("sqlite handle error: %s\n%s\n", err_msg,delete_sql); sqlite3_free(err_msg);
|
|
log_e("sqlite handle error: %s\n%s\n", err_msg,delete_sql); sqlite3_free(err_msg);
|
|
|
return -1 ;
|
|
return -1 ;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
sqlite3_free_table(pResult);
|
|
sqlite3_free_table(pResult);
|
|
|
|
|
+ dev_sql_VACCUM(db);
|
|
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
@@ -1304,6 +1336,7 @@ int dev_check_power_manage_info(sqlite3 *db, int cnt)
|
|
|
sqlite3_free(errmsg);
|
|
sqlite3_free(errmsg);
|
|
|
r = -1;
|
|
r = -1;
|
|
|
}
|
|
}
|
|
|
|
|
+ dev_sql_VACCUM(db);
|
|
|
}
|
|
}
|
|
|
return r;
|
|
return r;
|
|
|
}
|
|
}
|
|
@@ -1713,7 +1746,7 @@ int dev_update_t_ac_power_manage_over_info(sqlite3 *db,GlobalTreeACManager* _glo
|
|
|
/// @param product_id
|
|
/// @param product_id
|
|
|
/// @param _globalPowerManger
|
|
/// @param _globalPowerManger
|
|
|
/// @return
|
|
/// @return
|
|
|
-int dev_insert_t_ac_power_info(sqlite3 *db,GlobalTreeACManager* _globalPowerChnInfo,int* nIndex,char* pTimeData, int overwrite)
|
|
|
|
|
|
|
+int dev_insert_t_ac_power_info(sqlite3 *db,GlobalTreeACManager* _globalPowerChnInfo,int* nIndex,char* pTimeData)
|
|
|
{
|
|
{
|
|
|
int res ;
|
|
int res ;
|
|
|
char select_sql[1024] = {0};
|
|
char select_sql[1024] = {0};
|
|
@@ -1725,7 +1758,7 @@ int dev_insert_t_ac_power_info(sqlite3 *db,GlobalTreeACManager* _globalPowerChnI
|
|
|
char *table="Table_PhasePowerInfo";
|
|
char *table="Table_PhasePowerInfo";
|
|
|
GlobalTreeACManager *pInfo=_globalPowerChnInfo;
|
|
GlobalTreeACManager *pInfo=_globalPowerChnInfo;
|
|
|
|
|
|
|
|
- if(overwrite) {
|
|
|
|
|
|
|
+ if(overwrite_flag) {
|
|
|
sprintf(select_sql,"UPDATE %s SET product_index=%d,product_id=%d,product_ph_id=%d,product_ch_id_belong=%d,"
|
|
sprintf(select_sql,"UPDATE %s SET product_index=%d,product_id=%d,product_ph_id=%d,product_ch_id_belong=%d,"
|
|
|
"product_ph_voltage=%.2f,product_ph_current=%.2f,product_ph_power=%.2f,product_ph_power_freq=%.2f,"
|
|
"product_ph_voltage=%.2f,product_ph_current=%.2f,product_ph_power=%.2f,product_ph_power_freq=%.2f,"
|
|
|
"product_ph_consumption=%.2f,product_ph_power_factor=%.2f,product_ph_samp_time='%s' "
|
|
"product_ph_consumption=%.2f,product_ph_power_factor=%.2f,product_ph_samp_time='%s' "
|
|
@@ -1796,8 +1829,8 @@ int dev_delete_ac_power_info_all(sqlite3 *db)
|
|
|
log_e("sqlite handle error: %s\n%s\n", err_msg,delete_sql); sqlite3_free(err_msg);
|
|
log_e("sqlite handle error: %s\n%s\n", err_msg,delete_sql); sqlite3_free(err_msg);
|
|
|
return -1 ;
|
|
return -1 ;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
sqlite3_free_table(pResult);
|
|
sqlite3_free_table(pResult);
|
|
|
|
|
+ dev_sql_VACCUM(db);
|
|
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
@@ -2006,6 +2039,8 @@ int dev_delete_breaker_manage(sqlite3 *db,int product_id,int breaker_id)
|
|
|
return -1 ;
|
|
return -1 ;
|
|
|
}
|
|
}
|
|
|
sqlite3_free_table(pResult);
|
|
sqlite3_free_table(pResult);
|
|
|
|
|
+ dev_sql_VACCUM(db);
|
|
|
|
|
+
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -2359,6 +2394,8 @@ int dev_delete_sensor_manage(sqlite3 *db,int product_id,int sensor_id)
|
|
|
return -1 ;
|
|
return -1 ;
|
|
|
}
|
|
}
|
|
|
sqlite3_free_table(pResult);
|
|
sqlite3_free_table(pResult);
|
|
|
|
|
+ dev_sql_VACCUM(db);
|
|
|
|
|
+
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
|
int dev_delete_sensor_info_all(sqlite3 *db)
|
|
int dev_delete_sensor_info_all(sqlite3 *db)
|
|
@@ -2378,6 +2415,8 @@ int dev_delete_sensor_info_all(sqlite3 *db)
|
|
|
return -1 ;
|
|
return -1 ;
|
|
|
}
|
|
}
|
|
|
sqlite3_free_table(pResult);
|
|
sqlite3_free_table(pResult);
|
|
|
|
|
+ dev_sql_VACCUM(db);
|
|
|
|
|
+
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -2556,12 +2595,34 @@ int dev_insert_alarm_info(sqlite3* db,int product_id,int alarm_type,char* date_t
|
|
|
char** pResult = NULL; //用来指向sql执行结果的指针
|
|
char** pResult = NULL; //用来指向sql执行结果的指针
|
|
|
char* err_msg=NULL;
|
|
char* err_msg=NULL;
|
|
|
char select_sql[1024] = {0};
|
|
char select_sql[1024] = {0};
|
|
|
|
|
+ char *table="Table_AlarmManage";
|
|
|
|
|
+
|
|
|
|
|
+ if(overwrite_flag) {
|
|
|
|
|
+ int alarmNumber=get_key(db, table, "alarmNumber", DB_MAX);
|
|
|
|
|
+ if(alarmNumber<0) {
|
|
|
|
|
+ return -1;
|
|
|
|
|
+ }
|
|
|
|
|
+ alarmNumber++;
|
|
|
|
|
+
|
|
|
|
|
+ sprintf(select_sql,"UPDATE %s SET alarmNumber=%d,alarmDate='%s',alarmType=%d,product_id=%d,alarmContent='%s' "
|
|
|
|
|
+ "WHERE alarmNumber=(SELECT MIN(alarmNumber) FROM %s);",
|
|
|
|
|
+ table,
|
|
|
|
|
+ alarmNumber,
|
|
|
|
|
+ date_time,
|
|
|
|
|
+ alarm_type,
|
|
|
|
|
+ product_id,
|
|
|
|
|
+ alarm_content,
|
|
|
|
|
+ table);
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ sprintf(select_sql,"INSERT INTO %s (alarmDate,alarmType,product_id,alarmContent) VALUES ('%s',%d,%d,'%s');",
|
|
|
|
|
+ table,
|
|
|
|
|
+ date_time,
|
|
|
|
|
+ alarm_type,
|
|
|
|
|
+ product_id,
|
|
|
|
|
+ alarm_content);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- sprintf(select_sql,"INSERT INTO Table_AlarmManage (alarmDate,alarmType,product_id,alarmContent) VALUES ('%s',%d,%d,'%s');",
|
|
|
|
|
- date_time,
|
|
|
|
|
- alarm_type,
|
|
|
|
|
- product_id,
|
|
|
|
|
- alarm_content);
|
|
|
|
|
res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
|
|
res = sqlite_SQL_RUN(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
|
|
|
if(res != SQLITE_OK) {
|
|
if(res != SQLITE_OK) {
|
|
|
log_e("sqlite handle error: %s\n%s\n", err_msg,select_sql); sqlite3_free(err_msg);
|
|
log_e("sqlite handle error: %s\n%s\n", err_msg,select_sql); sqlite3_free(err_msg);
|
|
@@ -2792,6 +2853,8 @@ int dev_delete_alarm_info_all(sqlite3* db,int alarm_type)
|
|
|
return -1 ;
|
|
return -1 ;
|
|
|
}
|
|
}
|
|
|
sqlite3_free_table(pResult);
|
|
sqlite3_free_table(pResult);
|
|
|
|
|
+ dev_sql_VACCUM(db);
|
|
|
|
|
+
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
|
int dev_get_ntp_info(sqlite3 *db,NTPManager* _globalNTPInfo)
|
|
int dev_get_ntp_info(sqlite3 *db,NTPManager* _globalNTPInfo)
|
|
@@ -3016,6 +3079,8 @@ int dev_delete__group_info(sqlite3 *db,int product_id)
|
|
|
return -1 ;
|
|
return -1 ;
|
|
|
}
|
|
}
|
|
|
sqlite3_free_table(pResult);
|
|
sqlite3_free_table(pResult);
|
|
|
|
|
+ dev_sql_VACCUM(db);
|
|
|
|
|
+
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -3219,6 +3284,8 @@ int dev_delete_user_info(sqlite3 *db,int userID)
|
|
|
return -1 ;
|
|
return -1 ;
|
|
|
}
|
|
}
|
|
|
sqlite3_free_table(pResult);
|
|
sqlite3_free_table(pResult);
|
|
|
|
|
+ dev_sql_VACCUM(db);
|
|
|
|
|
+
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -3488,6 +3555,8 @@ int dev_delete_power_ds(sqlite3 *db,int product_id,int nChn,_PowerDSManage_t* _p
|
|
|
return -1;
|
|
return -1;
|
|
|
}
|
|
}
|
|
|
sqlite3_free_table(pResult);
|
|
sqlite3_free_table(pResult);
|
|
|
|
|
+ dev_sql_VACCUM(db);
|
|
|
|
|
+
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -4227,7 +4296,7 @@ quit:
|
|
|
|
|
|
|
|
int dev_smtp_update_recv(sqlite3 *db, smtp_recv_t *recv)
|
|
int dev_smtp_update_recv(sqlite3 *db, smtp_recv_t *recv)
|
|
|
{
|
|
{
|
|
|
- int i,r=0,exist=0,cnt=0;
|
|
|
|
|
|
|
+ int i,r=-1,exist=0,cnt=0;
|
|
|
|
|
|
|
|
#ifdef USE_SMTP
|
|
#ifdef USE_SMTP
|
|
|
char temp[1024];
|
|
char temp[1024];
|
|
@@ -4420,3 +4489,12 @@ int dev_sql_VACCUM(sqlite3 *db)
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+int dev_sql_set_overwrite(int flag)
|
|
|
|
|
+{
|
|
|
|
|
+ overwrite_flag = flag;
|
|
|
|
|
+ return 0;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|