123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- #include "databasethread.h"
- #include "smartlightshm.h"
- DatabaseThread::DatabaseThread(QObject *parent) : QThread(parent)
- {
- QDir dir(QString(DbPath));
- ConfSqlList.clear();
- RecSqlList.clear();
- StaSqlList.clear();
- if(!dir.exists())
- dir.mkdir(QString(DbPath));
- conf_db = QSqlDatabase::addDatabase("QSQLITE","conf_db");
- conf_db.setDatabaseName(QString(DbPath)+"/conf.db");
- rec_db = QSqlDatabase::addDatabase("QSQLITE","rec.db");
- rec_db.setDatabaseName(QString(DbPath)+"/rec.db");
- sta_db = QSqlDatabase::addDatabase("QSQLITE","sta_db");
- sta_db.setDatabaseName(QString(DbPath)+"/sta.db");
- if(db_init()){
- db_load();
- }
- }
- DatabaseThread::~DatabaseThread()
- {
- stop();
- deleteLater();
- }
- void DatabaseThread::stop()
- {
- keep = false;
- }
- void DatabaseThread::appendSql(int type, QString sql)
- {
- if(type==ConfSql)
- ConfSqlList.append(sql);
- else if(type==RecSql)
- RecSqlList.append(sql);
- else if(type==StaSql)
- StaSqlList.append(sql);
- }
- bool DatabaseThread::had_table(QStringList tblist, QString tbname)
- {
- for(int i=0;i<tblist.length();i++){
- if(tblist.at(i).compare(tbname)==0)
- return true;
- }
- return false;
- }
- bool DatabaseThread::db_init()
- {
- if(!conf_db.open())
- return false;
- if(!had_table(conf_db.tables(),"sys_conf")){
- conf_db.exec("create table sys_conf (name text(40), value text(200))");
- conf_db.exec("insert into sys_conf (name, value) values ('ServerAddr','88888888888888')");
- }
- conf_db.close();
- if(!rec_db.open())
- return false;
- if(!had_table(rec_db.tables(),"err_rec")){
- rec_db.exec("create table err_rec (id integer primary key autoincrement, device_id text(20), erc integer, sta integer, arg1 integer, arg2 integer, arg3 integer, value float, value2 float, others text(200), time1 integer, time2 text(20))");
- }
- rec_db.close();
- if(!sta_db.open())
- return false;
- if(!had_table(sta_db.tables(),"err_count")){
- sta_db.exec("create table err_count (id integer primary key autoincrement, device_id text(20), err_count1 integer, err_count2 integer)");
- }
- sta_db.close();
- return true;
- }
- void DatabaseThread::db_load()
- {
- if(conf_db.open()){
- QSqlQuery qry = conf_db.exec("select name, value from sys_conf");
- while (qry.next()) {
- if(qry.value(0).toString().compare("ServerAddr")==0){
- // ServerAddr0 = 0x00000000;
- // ServerAddr1 = 0x00000000;
- // quint64 sAddr = qry.value(1).toULongLong()&0xffffffffffffffff;
- // ServerAddr0 |= ((sAddr/10000000000000)<<20)&0x00f00000;
- // ServerAddr0 |= (((sAddr/1000000000000)%10)<<16)&0x000f0000;
- // ServerAddr0 |= (((sAddr/100000000000)%10)<<12)&0x0000f000;
- // ServerAddr0 |= (((sAddr/10000000000)%10)<<8)&0x00000f00;
- // ServerAddr0 |= (((sAddr/1000000000)%10)<<4)&0x000000f0;
- // ServerAddr0 |= ((sAddr/100000000)%10)&0x0000000f;
- // ServerAddr1 |= (((sAddr/10000000)%10)<<28)&0xf0000000;
- // ServerAddr1 |= (((sAddr/1000000)%10)<<24)&0x0f000000;
- // ServerAddr1 |= (((sAddr/100000)%10)<<20)&0x00f00000;
- // ServerAddr1 |= (((sAddr/10000)%10)<<16)&0x000f0000;
- // ServerAddr1 |= (((sAddr/1000)%10)<<12)&0x0000f000;
- // ServerAddr1 |= (((sAddr/100)%10)<<8)&0x00000f00;
- // ServerAddr1 |= (((sAddr/10)%10)<<4)&0x000000f0;
- // ServerAddr1 |= (sAddr%10)&0x0000000f;
- }
- }
- conf_db.close();
- }
- }
- void DatabaseThread::run()
- {
- keep = true;
- while(true){
- if(ConfSqlList.length()>0){
- if(conf_db.open()){
- if(conf_db.transaction()){
- while(ConfSqlList.length()>0){
- conf_db.exec(ConfSqlList.first());
- QString Data = QString("[ %1 sql ] %2")
- .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz"))
- .arg(ConfSqlList.first());
- emit sql_log(Data);
- ConfSqlList.removeFirst();
- usleep(1000);
- }
- conf_db.commit();
- }
- conf_db.close();
- }
- }
- if(RecSqlList.length()>0){
- if(rec_db.open()){
- if(rec_db.transaction()){
- while(RecSqlList.length()>0){
- rec_db.exec(RecSqlList.first());
- QString Data = QString("[ %1 sql ] %2")
- .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz"))
- .arg(RecSqlList.first());
- emit sql_log(Data);
- RecSqlList.removeFirst();
- usleep(1000);
- }
- rec_db.commit();
- }
- rec_db.close();
- }
- }
- if(StaSqlList.length()>0){
- if(sta_db.open()){
- if(sta_db.transaction()){
- while (StaSqlList.length()>0) {
- sta_db.exec(StaSqlList.first());
- QString Data = QString("[ %1 sql ] %2")
- .arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz"))
- .arg(StaSqlList.first());
- emit sql_log(Data);
- StaSqlList.removeFirst();
- usleep(1000);
- }
- sta_db.commit();
- }
- sta_db.close();
- }
- }
- usleep(100000);
- }
- }
|