📄 sql.cpp
字号:
#include"sql.h"#include<stdio.h>#define D DOOR_M#define H HOME_Mchar cmdI[100];char ins[] = "insert into ";char val[] = " values (";char table_form[] ="(time TEXT,log INTEGER)";char create_t[] = "create table ";sql * ss;char * create_table(char * table){ cmdI[0] = 0; strcat(cmdI,create_t); strcat(cmdI,table); strcat(cmdI,table_form); strcat(cmdI,";"); return cmdI;}char * insert(char * table,char * time,char * clog){ cmdI[0] = 0; strcat(cmdI,ins); strcat(cmdI,table); strcat(cmdI,val); strcat(cmdI,"\""); strcat(cmdI,time); strcat(cmdI,"\","); strcat(cmdI,clog); strcat(cmdI,")"); strcat(cmdI,";"); return cmdI; }static int callback(void * notused,int argc,char ** argv,char ** colname){ notused = notused; argc = argc; colname = colname; char time[20]; int log; sprintf(time,"%s",argv[0]); sscanf(argv[1],"%d",&log); log &=0x000000ef; ss->emit_sig_log(time,log); return 0;}void sql::emit_sig_log(char * time,int log){ emit sig_log(time,log);}void sql::request_db(char * tnm){ printf("consulting db \n"); char cmd[50]="select * from "; strcat(cmd,tnm); strcat(cmd,";"); char * zerromsg =0; sqlite3_exec(pdb,cmd,callback,0,&zerromsg);}sql::sql(){ ss = this; connect(&everyM,SIGNAL(timeout()),this,SLOT(should_change_TBL())); everyM.start(60 * 1000); pthread_mutex_init(&table_lock,NULL); table[0] = 'l'; table[1] = 'o'; table[2] = 'g'; table[3] = '1'; table[4] = '\0'; pdb = NULL;}int sql::should_change_TBL(){ date = date.currentDate(); if(date != lastDate)changeTBL(); lastDate = lastDate.currentDate();}int sql::initDB(){ int result; lastDate = lastDate.currentDate(); result = sqlite3_open(DB_NAME,&pdb); printf("opening... \n"); if(result != SQLITE_OK)printf("db open error \n"); if(pdb == NULL) { sqlite3_close(pdb); printf("data base open error \n"); DBstate = DB_unconnected; return -1; } printf("data base opened \n"); DBstate = DB_connected; return 0;}int sql::link_db(){ return initDB();}sql::~sql(){ sqlite3_close(pdb);}void sql::logger(int log){ treat(log);}void sql::treat(int log)//将收到的信息记入数据库{ int result; char chTime[20]; char * zErrMsg; char clog[20]; sprintf(clog,"%d",log); timeStamp = timeStamp.currentTime(); sprintf(chTime,"%d-%d-%d",timeStamp.hour(),timeStamp.minute(),timeStamp.second()); result = sqlite3_exec(pdb,insert(table,chTime,clog),0,0,&zErrMsg); /////here we should treat no connection if(result != SQLITE_OK)printf("insert error \n");}int sql::changeTBL(){ char * err; printf("changing TBL \n"); int result; char chDate[20]; date=date.currentDate(); sprintf(chDate,"%dy%dm%dd",date.year(),date.month(),date.day()); pthread_mutex_lock(&table_lock); table[3]= '\0'; strcat(table,chDate); printf("creating table %s \n",table); result = sqlite3_exec(pdb,create_table(table),0,0,&err); if(result == SQLITE_OK)printf("table %s created \n",table); else printf("table create error \n"); pthread_mutex_unlock(&table_lock); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -