#include "TimePowerCompensateDao.h" TimePowerCompensateDao::TimePowerCompensateDao(SQLite::Database* pdb) :BaseDao(pdb) { } TimePowerCompensateDao::~TimePowerCompensateDao() { } void TimePowerCompensateDao::CreateTable() { if (m_pDB->tableExists(TimePowerCompensate::TABLE_NAME))return; char buffer[1024]; string createsql = "CREATE TABLE %s(%s INTEGER PRIMARY KEY,%s INTEGER,%s INTEGER,%s INTEGER,%s FLOAT)"; sprintf_s(buffer, sizeof(buffer), createsql.c_str(), TimePowerCompensate::TABLE_NAME.c_str(), TimePowerCompensate::FIELD_ID.c_str(),TimePowerCompensate::FIELD_CNO.c_str(), TimePowerCompensate::FIELD_START_MINUTE.c_str(), TimePowerCompensate::FIELD_END_MINUTE.c_str(), TimePowerCompensate::FIELD_COMPENSATE.c_str()); m_pDB->exec(buffer); } void TimePowerCompensateDao::Find(int cno, TimePowerCompensateCfg& tps) { char buffer[1024]; string selectSql = "SELECT %s,%s,%s,%s,%s FROM %s WHERE %s=%d ORDER BY %s"; sprintf_s(buffer, sizeof(buffer), selectSql.c_str(), TimePowerCompensate::FIELD_ID.c_str(),TimePowerCompensate::FIELD_CNO.c_str(), TimePowerCompensate::FIELD_START_MINUTE.c_str(), TimePowerCompensate::FIELD_END_MINUTE.c_str(), TimePowerCompensate::FIELD_COMPENSATE.c_str(), TimePowerCompensate::TABLE_NAME.c_str(), TimePowerCompensate::FIELD_CNO.c_str(),cno,TimePowerCompensate::FIELD_START_MINUTE.c_str()); SQLite::Statement mtcquery(*m_pDB, buffer); while (mtcquery.executeStep()) { TimePowerCompensate* tpc = new TimePowerCompensate(); tpc->m_ID = mtcquery.getColumn(TimePowerCompensate::FIELD_ID.c_str()).getInt(); tpc->m_Cno = mtcquery.getColumn(TimePowerCompensate::FIELD_CNO.c_str()).getInt(); tpc->m_StartMinute = mtcquery.getColumn(TimePowerCompensate::FIELD_START_MINUTE.c_str()).getUInt(); tpc->m_EndMinute = mtcquery.getColumn(TimePowerCompensate::FIELD_END_MINUTE.c_str()).getUInt(); tpc->m_Compensate =(float) mtcquery.getColumn(TimePowerCompensate::FIELD_COMPENSATE.c_str()).getDouble(); tps.m_TimePowerCompensates.push_back(tpc); } } void TimePowerCompensateDao::Save(int cno,TimePowerCompensateCfg& tps) { char buffer[512]; sprintf_s(buffer, sizeof(buffer), "DELETE FROM %s WHERE %s=%d", TimePowerCompensate::TABLE_NAME.c_str(),TimePowerCompensate::FIELD_CNO.c_str(),cno); m_pDB->exec(string(buffer)); string strtemp = "INSERT INTO %s(%s,%s,%s,%s) VALUES("; sprintf_s(buffer, sizeof(buffer), strtemp.c_str(), TimePowerCompensate::TABLE_NAME.c_str(), TimePowerCompensate::FIELD_CNO.c_str(), TimePowerCompensate::FIELD_START_MINUTE.c_str(), TimePowerCompensate::FIELD_END_MINUTE.c_str(), TimePowerCompensate::FIELD_COMPENSATE.c_str() ); string strsql = string(buffer) + "%d,%u,%u,%f)"; for (size_t i = 0; i < tps.m_TimePowerCompensates.size(); ++i) { sprintf_s(buffer, sizeof(buffer), strsql.c_str(),cno, tps.m_TimePowerCompensates[i]->m_StartMinute, tps.m_TimePowerCompensates[i]->m_EndMinute, tps.m_TimePowerCompensates[i]->m_Compensate); m_pDB->exec(string(buffer)); } } void TimePowerCompensateDao::Export(int cno, TimePowerCompensateCfg& cfg, std::stringstream &sql) { char buffer[512]; sprintf_s(buffer, sizeof(buffer), "DELETE FROM %s WHERE %s=%d", TimePowerCompensate::TABLE_NAME.c_str(), TimePowerCompensate::FIELD_CNO.c_str(), cno); sql << string(buffer) + "\n"; string strtemp = "INSERT INTO %s(%s,%s,%s,%s) VALUES("; sprintf_s(buffer, sizeof(buffer), strtemp.c_str(), TimePowerCompensate::TABLE_NAME.c_str(), TimePowerCompensate::TABLE_NAME.c_str(), TimePowerCompensate::FIELD_CNO.c_str(), TimePowerCompensate::FIELD_START_MINUTE.c_str(), TimePowerCompensate::FIELD_END_MINUTE.c_str(), TimePowerCompensate::FIELD_COMPENSATE.c_str() ); string strsql = string(buffer) + "%d,%u,%u,%f)"; for (size_t i = 0; i < cfg.m_TimePowerCompensates.size(); ++i) { sprintf_s(buffer, sizeof(buffer), strsql.c_str(), cno, cfg.m_TimePowerCompensates[i]->m_StartMinute, cfg.m_TimePowerCompensates[i]->m_EndMinute, cfg.m_TimePowerCompensates[i]->m_Compensate); sql << string(buffer) + "\n"; } } void TimePowerCompensateDao::Import(std::string &sql) { std::stringstream ss(sql); string cmd; getline(ss, cmd); if (cmd.find(TimePowerCompensate::TABLE_NAME) == string::npos) return; do { m_pDB->exec(cmd); } while (getline(ss, cmd)); }