123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- /*************************************************************
- /* Copyright (C), 2008-2010, StoneU Tech. Co., Ltd.
- /* 文件名: DBInterface.h
- /* 作者: Jesse
- /* 创建日期: 2010-08-02
- /* 版本号: V1.0
- /* 描述: 实现多种数据库的支持
- /* 其它:
- /* 主要类模块: CDBInterface
- /* 历史修改记录:
- 作者 时间 版本 描述
- Jesse 10/08/02 1.0 创建这个模块
- ***************************************************************/
- #include "stdafx.h"
- #include "DBInterface.h"
- #include "Global.h"
- namespace DBInterface
- {
- CDBInterface* CDBInterface::m_pDBInterface = NULL;
- // 静态成员函数,提供全局访问的接口
- CDBInterface* CDBInterface::GetInstancePtr()
- {
- if( NULL == m_pDBInterface )
- {
- m_pDBInterface = new CDBInterface();
- }
- return m_pDBInterface;
- }
- // 设置数据库类型
- void CDBInterface::SetDBType(char *pDBType)
- {
- strcpy(m_chDBType, pDBType);
- }
- //获取表最大的ID, 通用函数
- INT CDBInterface::GetMaxID( CHAR *pTableName, CHAR *pFieldName, CHAR *pMaxID )
- {
- CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
- list<string> list1;
- list<string>::iterator it;
- sprintf(strSQLText, "select max(%s) as maxid from %s", pFieldName, pTableName);
- int nRet = CDBConnection::GetInstancePtr()->GetFieldValueList1(strSQLText, list1);
- if( 0 == list1.size() )
- {
- return 0;
- }
- if( nRet != -1 )
- {
- strcpy(pMaxID, list1.begin()->c_str());
- }
- for( it = list1.begin(); it != list1.end(); )
- {
- list1.erase(it++);
- }
- return nRet;
- }
- // 获取Summary资料
- INT CDBInterface::GetSummaryInfo(char *pUid, char *pVarDesc, char *pID)
- {
- CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
- list<string> list1;
- list<string>::iterator it;
- if (!_stricmp(m_chDBType, "SQL SERVER"))
- {
- sprintf(strSQLText, "select top 1 id from t_summary_log where varuid = \'%s\' and varname = \'%s\'", pUid, pVarDesc);
- }
- else if (!_stricmp(m_chDBType, "ACCESS97"))
- {
- sprintf(strSQLText, "select top 1 id from t_summary_log where varuid = \'%s\' and varname = \'%s\'", pUid, pVarDesc);
- }
- else if (!_stricmp(m_chDBType, "ACCESS2000"))
- {
- sprintf(strSQLText, "select top 1 id from t_summary_log where varuid = \'%s\' and varname = \'%s\'", pUid, pVarDesc);
- }
- else if(!_stricmp(m_chDBType, "PGSQL"))
- {
- sprintf(strSQLText, "select id from t_summary_log where varuid = \'%s\' and varname = \'%s\' limit 1", pUid, pVarDesc);
- }
- int nRet = CDBConnection::GetInstancePtr()->GetFieldValueList1(strSQLText, list1);
- if( 0 == list1.size() )
- {
- return 0;
- }
- if( nRet != -1 )
- {
- strcpy(pID, list1.begin()->c_str());
- }
- for( it = list1.begin(); it != list1.end(); )
- {
- list1.erase(it++);
- }
- return nRet;
- }
- //插入Summary记录
- INT CDBInterface::InsertSummaryRecord(
- CHAR* pDevName, // 设备名称
- CHAR* pHappenTime, // 发生时间
- CHAR* pMemo, // 备注
- CHAR *pVarDesc, // 变量描述
- double dbCurrValue, // 当前值
- CHAR* pVarUid, // 设备Uid
- CHAR* pVarName // 变量名称
- )
- {
- CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
- int iMaxID;
- CHAR chMaxID[10] = {0};
- GetMaxID("t_summary_log", "id", chMaxID);
- if( 0 == atoi(chMaxID) )
- {
- iMaxID = 1;
- }
- else
- {
- iMaxID = atoi(chMaxID) + 1;
- }
- sprintf(strSQLText, "insert into t_summary_log(devname, happentime," \
- "memos, id, type_desc, curr_value, varuid, varname) values(" \
- "\'%s\', \'%s\', \'%s\', %d, \'%s\', %.1f, \'%s\', \'%s\')",
- pDevName, pHappenTime, pMemo, iMaxID, pVarDesc, dbCurrValue, pVarUid, pVarName);
- //LOG4C((LOG_NOTICE, "%s", strSQLText));
- return CDBConnection::GetInstancePtr()->Execute(strSQLText);
- }
- //更新Summary记录
- INT CDBInterface::EditSummaryRecord(
- CHAR *pDevName, // 设备名称
- CHAR *pHappenTime, // 发生时间
- CHAR* pMemo, // 备注
- int iID, // ID
- CHAR* pVarDesc, // 变量描述
- double dbCurrValue, // 当前值
- CHAR* pVarUid, // 设备Uid
- CHAR* pVarName // 变量名称
- )
- {
- CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
- sprintf(strSQLText, "update t_summary_log set devname = \'%s\', happentime = \'%s\'," \
- "memos = \'%s\', type_desc = \'%s\', curr_value = %.1f, varuid = \'%s\', varname = \'%s\' where id = %d",
- pDevName, pHappenTime, pMemo, pVarDesc, dbCurrValue, pVarUid, pVarName, iID);
- return CDBConnection::GetInstancePtr()->Execute(strSQLText);
- }
- //更新Summary记录
- INT CDBInterface::EditSummaryRecord(
- CHAR *pDevName, // 设备名称
- CHAR *pHappenTime, // 发生时间
- CHAR* pMemo, // 备注
- CHAR* pVarDesc, // 变量描述
- double dbCurrValue, // 当前值
- CHAR* pVarUid, // 设备Uid
- CHAR* pVarName // 变量名称
- )
- {
- CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
- sprintf(strSQLText, "update t_summary_log set devname = \'%s\', happentime = \'%s\'," \
- "memos = \'%s\', type_desc = \'%s\', curr_value = %.1f, varuid = \'%s\', varname = \'%s\' where varname = \'%s\'",
- pDevName, pHappenTime, pMemo, pVarDesc, dbCurrValue, pVarUid, pVarName, pVarName);
- //LOG4C((LOG_NOTICE, "%s", strSQLText));
- return CDBConnection::GetInstancePtr()->Execute(strSQLText);
- }
- };
|