#include "SystemBaseDao.h" SystemBaseDao::SystemBaseDao(SQLite::Database* pdb) :BaseDao(pdb) { } SystemBaseDao::~SystemBaseDao() { } void SystemBaseDao::CreateTable() { SQLite::Transaction transaction(*m_pDB); if (!m_pDB->tableExists(MachineTypeCfg::TABLE_NAME)) { char buffer[1024]; string createsql = "CREATE TABLE %s(%s INTEGER PRIMARY KEY,%s VARCHAR(50) UNIQUE)"; sprintf_s(buffer, sizeof(buffer), createsql.c_str(), MachineTypeCfg::TABLE_NAME.c_str(), MachineTypeCfg::FIELD_ID.c_str(), MachineTypeCfg::FIELD_CODE.c_str()); m_pDB->exec(buffer); } if (!m_pDB->tableExists(PurifierTypeCfg::TABLE_NAME)) { char buffer[1024]; string createsql = "CREATE TABLE %s(%s INTEGER PRIMARY KEY,%s VARCHAR(50) UNIQUE)"; sprintf_s(buffer, sizeof(buffer), createsql.c_str(), PurifierTypeCfg::TABLE_NAME.c_str(), PurifierTypeCfg::FIELD_ID.c_str(), PurifierTypeCfg::FIELD_CODE.c_str()); m_pDB->exec(buffer); } transaction.commit(); } void SystemBaseDao::Find(SystemBaseCfg& cfg) { char buffer[1024]; string selectSql = "SELECT %s,%s FROM %s"; sprintf_s(buffer, sizeof(buffer), selectSql.c_str(), MachineTypeCfg::FIELD_ID.c_str(), MachineTypeCfg::FIELD_CODE.c_str(), MachineTypeCfg::TABLE_NAME.c_str()); SQLite::Statement mtcquery(*m_pDB, buffer); while (mtcquery.executeStep()) { MachineTypeCfg* mtc = new MachineTypeCfg(); mtc->m_Id = mtcquery.getColumn(MachineTypeCfg::FIELD_ID.c_str()).getInt(); mtc->m_Code = mtcquery.getColumn(MachineTypeCfg::FIELD_CODE.c_str()).getString(); cfg.m_MachineTypeMap[mtc->m_Id] = mtc; } string strtemp = "INSERT INTO %s(%s,%s) VALUES("; sprintf_s(buffer, sizeof(buffer), strtemp.c_str(), MachineTypeCfg::TABLE_NAME.c_str(), MachineTypeCfg::FIELD_ID.c_str(), MachineTypeCfg::FIELD_CODE.c_str() ); string strsql = string(buffer) + "%d,'%s')"; vector needins; if (cfg.m_MachineTypeMap.find(MachineTypeCfg::HBD_1000) == cfg.m_MachineTypeMap.end()) { MachineTypeCfg* mtc = new MachineTypeCfg(); mtc->m_Id = MachineTypeCfg::HBD_1000; mtc->m_Code = "HBD1000"; cfg.m_MachineTypeMap[mtc->m_Id] = mtc; sprintf_s(buffer, sizeof(buffer), strsql.c_str(),mtc->m_Id,mtc->m_Code.c_str()); needins.push_back(buffer); } if (cfg.m_MachineTypeMap.find(MachineTypeCfg::HBD_1500) == cfg.m_MachineTypeMap.end()) { MachineTypeCfg* mtc = new MachineTypeCfg(); mtc->m_Id = MachineTypeCfg::HBD_1500; mtc->m_Code = "HBD1500"; cfg.m_MachineTypeMap[mtc->m_Id] = mtc; sprintf_s(buffer, sizeof(buffer), strsql.c_str(), mtc->m_Id, mtc->m_Code.c_str()); needins.push_back(buffer); } if (cfg.m_MachineTypeMap.find(MachineTypeCfg::HBD_1200_OLD) == cfg.m_MachineTypeMap.end()) { MachineTypeCfg* mtc = new MachineTypeCfg(); mtc->m_Id = MachineTypeCfg::HBD_1200_OLD; mtc->m_Code = "HBD1200_OLD"; cfg.m_MachineTypeMap[mtc->m_Id] = mtc; sprintf_s(buffer, sizeof(buffer), strsql.c_str(), mtc->m_Id, mtc->m_Code.c_str()); needins.push_back(buffer); } if (cfg.m_MachineTypeMap.find(MachineTypeCfg::HBD_1200) == cfg.m_MachineTypeMap.end()) { MachineTypeCfg* mtc = new MachineTypeCfg(); mtc->m_Id = MachineTypeCfg::HBD_1200; mtc->m_Code = "HBD1200"; cfg.m_MachineTypeMap[mtc->m_Id] = mtc; sprintf_s(buffer, sizeof(buffer), strsql.c_str(), mtc->m_Id, mtc->m_Code.c_str()); needins.push_back(buffer); } if (cfg.m_MachineTypeMap.find(MachineTypeCfg::HBD_E1000) == cfg.m_MachineTypeMap.end()) { MachineTypeCfg* mtc = new MachineTypeCfg(); mtc->m_Id = MachineTypeCfg::HBD_E1000; mtc->m_Code = "HBD E1000"; cfg.m_MachineTypeMap[mtc->m_Id] = mtc; sprintf_s(buffer, sizeof(buffer), strsql.c_str(), mtc->m_Id, mtc->m_Code.c_str()); needins.push_back(buffer); } sprintf_s(buffer, sizeof(buffer), selectSql.c_str(), PurifierTypeCfg::FIELD_ID.c_str(), PurifierTypeCfg::FIELD_CODE.c_str(), PurifierTypeCfg::TABLE_NAME.c_str()); SQLite::Statement ptcquery(*m_pDB, buffer); while (ptcquery.executeStep()) { PurifierTypeCfg* ptc = new PurifierTypeCfg(); ptc->m_Id = ptcquery.getColumn(PurifierTypeCfg::FIELD_ID.c_str()).getInt(); ptc->m_Code = ptcquery.getColumn(PurifierTypeCfg::FIELD_CODE.c_str()).getString(); cfg.m_PurifierTypeMap[ptc->m_Id] = ptc; } string strtemp2 = "INSERT INTO %s(%s,%s) VALUES("; sprintf_s(buffer, sizeof(buffer), strtemp2.c_str(), PurifierTypeCfg::TABLE_NAME.c_str(), PurifierTypeCfg::FIELD_ID.c_str(), PurifierTypeCfg::FIELD_CODE.c_str() ); string strsql2 = string(buffer) + "%d,'%s')"; if (cfg.m_PurifierTypeMap.find(PurifierTypeCfg::HBD_PURIFIER_1) == cfg.m_PurifierTypeMap.end()) { PurifierTypeCfg* ptc = new PurifierTypeCfg(); ptc->m_Id = PurifierTypeCfg::HBD_PURIFIER_1; ptc->m_Code = "HBD_1GP"; cfg.m_PurifierTypeMap[ptc->m_Id] = ptc; sprintf_s(buffer, sizeof(buffer), strsql2.c_str(), ptc->m_Id, ptc->m_Code.c_str()); needins.push_back(buffer); } if (cfg.m_PurifierTypeMap.find(PurifierTypeCfg::XT) == cfg.m_PurifierTypeMap.end()) { PurifierTypeCfg* ptc = new PurifierTypeCfg(); ptc->m_Id = PurifierTypeCfg::XT; ptc->m_Code = "SANTANAC"; cfg.m_PurifierTypeMap[ptc->m_Id] = ptc; sprintf_s(buffer, sizeof(buffer), strsql2.c_str(), ptc->m_Id, ptc->m_Code.c_str()); needins.push_back(buffer); } if (cfg.m_PurifierTypeMap.find(PurifierTypeCfg::HBD_PURIFIER_2) == cfg.m_PurifierTypeMap.end()) { PurifierTypeCfg* ptc = new PurifierTypeCfg(); ptc->m_Id = PurifierTypeCfg::HBD_PURIFIER_2; ptc->m_Code = "HBD_2GP"; cfg.m_PurifierTypeMap[ptc->m_Id] = ptc; sprintf_s(buffer, sizeof(buffer), strsql2.c_str(), ptc->m_Id, ptc->m_Code.c_str()); needins.push_back(buffer); } if (!needins.empty()) { SQLite::Transaction transaction(*m_pDB); for (size_t i = 0; i < needins.size(); ++i) { m_pDB->exec(needins[i]); } transaction.commit(); } }