/////////////////////////////////////////////////////////// // // File: // DBConnection.cpp // Author: // 严晓斌 // Date: // 2008-05-23 // Comments: // 主要处理数据库连接任务 // /////////////////////////////////////////////////////////// #include "stdafx.h" #include "Global.h" //#include #include #include #include //#include "Ado.h" #include "DBConnection.h" //#include HANDLE m_hDBConnectionThread = NULL; BOOL m_bBeep = FALSE; BOOL m_bDBConnected = FALSE; BOOL DBConnectionThreadStart() { HANDLE hThread = NULL; INT iConfMemberIndex = 0; INT iConfGroupIndex = 0; //数据库连接串 if (!_stricmp(g_strDBType, "SQL SERVER")) sprintf(g_strConnectString, "Provider=sqloledb;Data Source=%s,1433;Initial Catalog=%s;User Id=%s;Password=%s; ", g_strServerName, g_strDataBaseName, g_strUserName, g_strPassword); else if (!_stricmp(g_strDBType, "ACCESS97")) sprintf(g_strConnectString, "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=%s", g_strAccessFile); else if (!_stricmp(g_strDBType, "ACCESS2000")) sprintf(g_strConnectString, "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s", g_strAccessFile); else if(!_stricmp(g_strDBType, "PGSQL")) sprintf(g_strConnectString, "DRIVER={PostgreSQL ODBC Driver(UNICODE)}; SERVER=%s; port=5432; DATABASE=%s; UID=%s; PWD=%s;", g_strServerName, g_strDataBaseName, g_strUserName, g_strPassword); else sprintf(g_strConnectString, "Provider=sqloledb;Data Source=%s;Initial Catalog=%s;User Id=%s;Password=%s; ", g_strServerName, g_strDataBaseName, g_strUserName, g_strPassword); g_pADODatabase = new CADODatabase; if (g_pADODatabase != NULL) { g_pADODatabase->SetConnectionString(g_strConnectString); if (FALSE == g_pADODatabase->Open()) { g_pADODatabase->Close(); delete g_pADODatabase; g_pADODatabase = NULL; m_bBeep = TRUE; } else { m_bDBConnected = TRUE; } } return TRUE; } BOOL DBConnectionThreadEnd() { if ((g_pADODatabase != NULL) && (g_pADODatabase->IsOpen())) { g_pADODatabase->Close(); delete g_pADODatabase; g_pADODatabase = NULL; } return TRUE; } //获取表最大的ID, 通用函数 INT GetMaxID( CHAR *pTableName, CHAR *pFieldName, CHAR *pMaxID ) { CHAR strSQLText[MAX_SQL_LENGTH + 1] = ""; list list1; list::iterator it; sprintf(strSQLText, "select max(%s) as maxid from %s", pFieldName, pTableName); int nRet = 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; } //获取t_dev_variant变量属性表字段ID的最大值 INT GetVarMaxID( CHAR *pMaxID ) { CHAR strMsg[MAX_MSG_LENGTH + 1] = ""; CHAR strSQLText[MAX_SQL_LENGTH + 1] = ""; CString strID; CADORecordset* pRSet = NULL; INT iRetCode = 0; int nCount = 0; try { if (g_pADODatabase != NULL && g_pADODatabase->IsOpen()) { pRSet = new CADORecordset(g_pADODatabase); if (NULL == pRSet) { return -1; } sprintf(strSQLText, "select max(id) as maxid from t_dev_variant"); iRetCode = pRSet->Open(strSQLText, CADORecordset::openQuery); if (iRetCode == 0) { delete pRSet; pRSet = NULL; return -1; } nCount = pRSet->GetRecordCount(); if (nCount == 0) { if( pRSet ) { delete pRSet; pRSet = NULL; } return 0; } // 获取最大的设备ID if (!pRSet->IsFieldNull("maxid")) { pRSet->GetFieldValue("maxid", strID); strcpy(pMaxID, (char *)(LPCTSTR)strID); } if( pRSet ) { delete pRSet; pRSet = NULL; } return nCount; } } catch (_com_error &e) { if( pRSet ) { delete pRSet; pRSet = NULL; } //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage()); //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg)); return -1; } if( pRSet ) { delete pRSet; pRSet = NULL; } return 0; } //插入设备资料 INT InsertVarInfo(int nID, CHAR *pUid, CHAR *pVarName, CHAR *pDesc, int nVarTypeID, int nDataLen, CHAR *pOnDesc, CHAR *pOffDesc, int nMaxValues, int nMinValues, int nMaxScale, int nMinScale, int nLowerLimit, int nUpperLimit, int nNormalState, CHAR *pSetValue, int nRearm, int nOffset, CHAR *pUnit, int nCollentFreq, float fCoef, int nWarnLevel, int nReadOnly, int nIsSave, int nRealtimeFlag, int nRecCurve, int nIsDDE, int nRegNum, int nFuncID, int nChildID, int nVarItemID, CHAR *pSnmpOid, CHAR *pField, int nDevID, int nRegStartAddr, CHAR *pRs232Cmd, CHAR *pRs232Type, int nRs232Index, int nIdentifyTime, int nReDetectTime, int nNormIsNotice, char *pStrReserved1, char *pStrReserved2, char *pStrReserved3, char *pStrReserved4, char *pStrReserved5, char *pStrReserved6, char *pStrReserved7, char *pStrReserved8, char *pStrReserved9, char *pStrReserved10, int nReserved1, int nReserved2, int nReserved3, int nReserved4, int nReserved5, int nReserved6, int nReserved7, int nReserved8, int nReserved9, int nReserved10, int bReserved1, int bReserved2, int bReserved3, int bReserved4, int bReserved5, int bReserved6, int bReserved7, int bReserved8, int bReserved9, int bReserved10) { CHAR strMsg[MAX_MSG_LENGTH + 1] = ""; CHAR strSQLText[409600] = ""; INT iRetCode = 0; CString strIsDDE, strRecCurve, strRealtimeFlag, strIsSave, strNormalIsNotice, strReadOnly; CString strbResrved1, strbResrved2, strbResrved3, strbResrved4, strbResrved5; CString strbResrved6, strbResrved7, strbResrved8, strbResrved9, strbResrved10; strIsDDE = (nIsDDE == 0)?"FALSE":"TRUE"; strRecCurve = (nRecCurve == 0)?"FALSE":"TRUE"; strRealtimeFlag = (nRealtimeFlag == 0)?"FALSE":"TRUE"; strIsSave = (nIsSave == 0)?"FALSE":"TRUE"; strNormalIsNotice = (nNormIsNotice == 0)?"FALSE":"TRUE"; strbResrved1 = (bReserved1 == 0)?"FALSE":"TRUE"; strbResrved2 = (bReserved2 == 0)?"FALSE":"TRUE"; strbResrved3 = (bReserved3 == 0)?"FALSE":"TRUE"; strbResrved4 = (bReserved4 == 0)?"FALSE":"TRUE"; strbResrved5 = (bReserved5 == 0)?"FALSE":"TRUE"; strbResrved6 = (bReserved6 == 0)?"FALSE":"TRUE"; strbResrved7 = (bReserved7 == 0)?"FALSE":"TRUE"; strbResrved8 = (bReserved8 == 0)?"FALSE":"TRUE"; strbResrved9 = (bReserved9 == 0)?"FALSE":"TRUE"; strbResrved10 = (bReserved10 == 0)?"FALSE":"TRUE"; strReadOnly.Format("%d", nReadOnly); try { if (g_pADODatabase != NULL && g_pADODatabase->IsOpen()) { if (!_stricmp(g_strDBType, "SQL SERVER")) { sprintf(strSQLText, "insert into t_dev_variant(id, uid, varname, description, vartypeid, " \ "datalen, ondesc, offdesc, maxvalues, minvalues, maxconvtrate, minconvtrate, " \ "lowerlimit, upperlimit, normalstate, setvalue, rearm, [offsets], unit, collectfrequence, " \ "coefficient, warnlevel, readonly, issave, realtimeflag, reccurve, isdde, " \ "registernum, funcid, childid, var_item_id, snmpoid, fields, devtypeid, address, " \ "rs232cmd, rs232type, rs232index, identifytime, redetecttime, normalisnotice, " \ "strreserved1, strreserved2, strreserved3, strreserved4, strreserved5, " \ "strreserved6, strreserved7, strreserved8, strreserved9, strreserved10, "\ "intreserved1, intreserved2, intreserved3, intreserved4, intreserved5, " \ "intreserved6, intreserved7, intreserved8, intreserved9, intreserved10, " \ "boolreserved1, boolreserved2, boolreserved3, boolreserved4, boolreserved5, " \ "boolreserved6, boolreserved7, boolreserved8, boolreserved9, boolreserved10) values(" \ "%d, \'%s\', \'%s\', \'%s\', %d, " \ "%d, \'%s\', \'%s\', %d, %d, %d, %d, " \ "%d, %d, %d, \'%s\', %d, %d, \'%s\', %d," \ "%.10f, %d, \'%s\', %d, %d, %d, %d," \ "%d, %d, %d, %d, \'%s\', \'%s\', %d, %d, " \ "\'%s\', \'%s\', %d, %d, %d, %d, " \ "\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', " \ "\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', " \ "%d, %d, %d, %d, %d, " \ "%d, %d, %d, %d, %d, " \ "%d, %d, %d, %d, %d, " \ "%d, %d, %d, %d, %d)", nID, pUid, pVarName, pDesc, nVarTypeID, nDataLen, pOnDesc, pOffDesc, nMaxValues, nMinValues, nMaxScale, nMinScale, nLowerLimit, nUpperLimit, nNormalState, pSetValue, nRearm, nOffset, pUnit, nCollentFreq, fCoef, nWarnLevel, strReadOnly, nIsSave, nRealtimeFlag, nRecCurve, nIsDDE, nRegNum, nFuncID, nChildID, nVarItemID, pSnmpOid, pField, nDevID, nRegStartAddr, pRs232Cmd, pRs232Type, nRs232Index, nIdentifyTime, nReDetectTime, nNormIsNotice, pStrReserved1, pStrReserved2, pStrReserved3, pStrReserved4, pStrReserved5, pStrReserved6, pStrReserved7, pStrReserved8, pStrReserved9, pStrReserved10, nReserved1, nReserved2, nReserved3, nReserved4, nReserved5, nReserved6, nReserved7, nReserved8, nReserved9, nReserved10, bReserved1, bReserved2, bReserved3, bReserved4, bReserved5, bReserved6, bReserved7, bReserved8, bReserved9, bReserved10); } else if (!_stricmp(g_strDBType, "ACCESS97")) { sprintf(strSQLText, "select tel, mobiletel, fax, email from " \ "t_role_equip a left outer join t_user_info b on a.userid = b.uid " \ "where a.uid = \'%s\' and b.status = 0 or b.status is null and b.uid <> 'admin'", pUid); } else if (!_stricmp(g_strDBType, "ACCESS2000")) { sprintf(strSQLText, "select tel, mobiletel, fax, email from " \ "t_role_equip a left outer join t_user_info b on a.userid = b.uid " \ "where a.uid = \'%s\' and b.status = 0 or b.status is null and b.uid <> 'admin'", pUid); } else if(!_stricmp(g_strDBType, "PGSQL")) { sprintf(strSQLText, "insert into t_dev_variant(id, uid, varname, description, vartypeid, " \ "datalen, ondesc, offdesc, maxvalues, minvalues, maxconvtrate, minconvtrate, " \ "lowerlimit, upperlimit, normalstate, setvalue, rearm, offsets, unit, collectfrequence, " \ "coefficient, warnlevel, readonly, issave, realtimeflag, reccurve, isdde, " \ "registernum, funcid, childid, var_item_id, snmpoid, fields, devtypeid, address, " \ "rs232cmd, rs232type, rs232index, identifytime, redetecttime, normalisnotice, " \ "strreserved1, strreserved2, strreserved3, strreserved4, strreserved5, " \ "strreserved6, strreserved7, strreserved8, strreserved9, strreserved10, "\ "intreserved1, intreserved2, intreserved3, intreserved4, intreserved5, " \ "intreserved6, intreserved7, intreserved8, intreserved9, intreserved10, " \ "boolreserved1, boolreserved2, boolreserved3, boolreserved4, boolreserved5, " \ "boolreserved6, boolreserved7, boolreserved8, boolreserved9, boolreserved10) values(" \ "%d, \'%s\', \'%s\', \'%s\', %d, " \ "%d, \'%s\', \'%s\', %d, %d, %d, %d, " \ "%d, %d, %d, \'%s\', %d, %d, \'%s\', %d," \ "%.10f, %d, \'%s\', %s, %s, %s, %s," \ "%d, %d, %d, %d, \'%s\', \'%s\', %d, %d, " \ "\'%s\', \'%s\', %d, %d, %d, %s, " \ "\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', " \ "\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', " \ "%d, %d, %d, %d, %d, " \ "%d, %d, %d, %d, %d, " \ "%s, %s, %s, %s, %s, " \ "%s, %s, %s, %s, %s)", nID, pUid, pVarName, pDesc, nVarTypeID, nDataLen, pOnDesc, pOffDesc, nMaxValues, nMinValues, nMaxScale, nMinScale, nLowerLimit, nUpperLimit, nNormalState, pSetValue, nRearm, nOffset, pUnit, nCollentFreq, fCoef, nWarnLevel, strReadOnly, strIsSave, strRealtimeFlag, strRecCurve, strIsDDE, nRegNum, nFuncID, nChildID, nVarItemID, pSnmpOid, pField, nDevID, nRegStartAddr, pRs232Cmd, pRs232Type, nRs232Index, nIdentifyTime, nReDetectTime, strNormalIsNotice, pStrReserved1, pStrReserved2, pStrReserved3, pStrReserved4, pStrReserved5, pStrReserved6, pStrReserved7, pStrReserved8, pStrReserved9, pStrReserved10, nReserved1, nReserved2, nReserved3, nReserved4, nReserved5, nReserved6, nReserved7, nReserved8, nReserved9, nReserved10, strbResrved1, strbResrved2, strbResrved3, strbResrved4, strbResrved5, strbResrved6, strbResrved7, strbResrved8, strbResrved9, strbResrved10); } iRetCode = g_pADODatabase->Execute(strSQLText); } } catch (_com_error &e) { //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage()); //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg)); return 0; } return iRetCode; } //获取t_dev_variant_item资料 INT GetVarItem( CHAR *pUid, int nVarItemID ) { CHAR strMsg[MAX_MSG_LENGTH + 1] = ""; CHAR strSQLText[MAX_SQL_LENGTH + 1] = ""; CString strID; CADORecordset* pRSet = NULL; INT iRetCode = 0; int nCount = 0; try { if (g_pADODatabase != NULL && g_pADODatabase->IsOpen()) { pRSet = new CADORecordset(g_pADODatabase); if (NULL == pRSet) { return -1; } sprintf(strSQLText, "select id from t_dev_variant_item where uid = \'%s\' and id = %d", pUid, nVarItemID); iRetCode = pRSet->Open(strSQLText, CADORecordset::openQuery); if (iRetCode == 0) { delete pRSet; pRSet = NULL; return -1; } nCount = pRSet->GetRecordCount(); if (nCount == 0) { if( pRSet ) { delete pRSet; pRSet = NULL; } return 0; } if( pRSet ) { delete pRSet; pRSet = NULL; } return nCount; } } catch (_com_error &e) { if( pRSet ) { delete pRSet; pRSet = NULL; } //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage()); //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg)); return -1; } if( pRSet ) { delete pRSet; pRSet = NULL; } return 0; } //插入Bit位表 INT InsertVarItemInfo(int nID, CHAR *pUid, int nStartBit, int nEndBit) { CHAR strMsg[MAX_MSG_LENGTH + 1] = ""; CHAR strSQLText[MAX_SQL_LENGTH + 1] = ""; INT iRetCode = 0; try { if (g_pADODatabase != NULL && g_pADODatabase->IsOpen()) { sprintf(strSQLText, "insert into t_dev_variant_item(id, uid, startbit, endbit) values(" \ "%d, \'%s\', %d, %d)", nID, pUid, nStartBit, nEndBit); iRetCode = g_pADODatabase->Execute(strSQLText); } } catch (_com_error &e) { //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage()); //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg)); return 0; } return iRetCode; } //插入数据记录 INT InsertDataRecord( CHAR* pDevName, // 设备名称 CHAR* pHappenTime, // 发生时间 CHAR* pVarName, // 变量名称 CHAR *pVarDesc, // 变量描述 double dbCurrValue // 当前值 ) { INT iRetCode = 0; CHAR strSQLText[MAX_SQL_LENGTH + 1] = ""; static int iMaxID = 1; //CHAR chMaxID[MAX_ID] = {0}; //GetMaxID("t_data_rec", "id", chMaxID); //if( 0 == atoi(chMaxID) ) //{ // iMaxID = 1; //} //else //{ // iMaxID = atoi(chMaxID) + 1; //} if (g_pADODatabase != NULL && g_pADODatabase->IsOpen()) { sprintf(strSQLText, "insert into t_data_rec(id,devname, happentime,varname,vardesc,datavalue) values(" \ "%d, \'%s\', \'%s\', \'%s\', \'%s\', %.1f)", iMaxID, pDevName, pHappenTime,pVarName, pVarDesc, dbCurrValue ); iRetCode = g_pADODatabase->Execute(strSQLText); iMaxID++; } return iRetCode; } INT InsertDvrInfo( CHAR* ip, // 设备名称 int port, // CHAR* username, // 发生时间 CHAR* pwd, // 变量名称 int channelnum, int serveripvalue1, int serveripvalue2, CHAR* servermultiip, int nServermultiIP1, int nServermultiIP2, CHAR *servername, // 变量描述 int devsoftversion ) { INT iRetCode = 0; CHAR strSQLText[MAX_SQL_LENGTH + 1] = ""; int iMaxID = 0; CHAR chMaxID[MAX_ID] = {0}; GetMaxID("t_video_dvrinfo", "id", chMaxID); if( 0 == atoi(chMaxID) ) { iMaxID = 1; } else { iMaxID = atoi(chMaxID) + 1; } if (g_pADODatabase != NULL && g_pADODatabase->IsOpen()) { sprintf(strSQLText, "insert into t_video_dvrinfo( id,ip, port,username,pwd,channelnum,serveripvalue1,serveripvalue2,servermultiip,servermultiipvalue1,servermultiipvalue2,servername,devsoftversion ) values(" \ "%d, \'%s\',%d, \'%s\', \'%s\', %d,%d,%d, \'%s\', %d, %d,\'%s\', %d )", iMaxID, ip, port,username, pwd, channelnum,serveripvalue1,serveripvalue2,servermultiip,nServermultiIP1,nServermultiIP2,servername,devsoftversion ); iRetCode = g_pADODatabase->Execute(strSQLText); } return iRetCode; } //插入通道记录 INT InsertChannelInfo( CHAR* ip, // 设备名称 CHAR* channame, int bused, int dwaddress, int dwalarmlevel, int ichannel, int wjmqtype, int dwprotocol, int isequence ) { INT iRetCode = 0; CHAR strSQLText[MAX_SQL_LENGTH + 1] = ""; int iMaxID = 0; CHAR chMaxID[MAX_ID] = {0}; GetMaxID("t_video_channelinfo", "id", chMaxID); if( 0 == atoi(chMaxID) ) { iMaxID = 1; } else { iMaxID = atoi(chMaxID) + 1; } if (g_pADODatabase != NULL && g_pADODatabase->IsOpen()) { sprintf(strSQLText, "insert into t_video_channelinfo( id,ip, channame,bused,dwaddress,dwalarmlevel,ichannel,wjmqtype,dwprotocol,isequence ) values(" \ "%d, \'%s\',\'%s\',%d, %d,%d,%d,%d,%d,%d)", iMaxID, ip, channame,bused,dwaddress,dwalarmlevel,ichannel,wjmqtype,dwprotocol,isequence ); iRetCode = g_pADODatabase->Execute(strSQLText); } return iRetCode; } //插入本地配置 INT InsertLocalSetting( CHAR* sdownloadpath, CHAR* spicturesavepath, CHAR* slogsavepath, int videomaxtime, int nomotiontime, int istartrecorddriver, int iendrecorddriver ) { INT iRetCode = 0; CHAR strSQLText[MAX_SQL_LENGTH + 1] = ""; int iMaxID = 0; CHAR chMaxID[MAX_ID] = {0}; GetMaxID("t_video_localsetting", "id", chMaxID); if( 0 == atoi(chMaxID) ) { iMaxID = 1; } else { iMaxID = atoi(chMaxID) + 1; } if (g_pADODatabase != NULL && g_pADODatabase->IsOpen()) { sprintf(strSQLText, "insert into t_video_localsetting( id,sdownloadpath, spicturesavepath,slogsavepath,videomaxtime,nomotiontime,istartrecorddriver,iendrecorddriver ) values(" \ "%d, \'%s\',\'%s\',\'%s\',%d, %d,%d,%d )", iMaxID, sdownloadpath, spicturesavepath,slogsavepath,videomaxtime,nomotiontime,istartrecorddriver,iendrecorddriver ); iRetCode = g_pADODatabase->Execute(strSQLText); } return iRetCode; } //更新Bit位表 INT UpdateVarItemInfo(int nID, CHAR *pUid, int nStartBit, int nEndBit) { CHAR strMsg[MAX_MSG_LENGTH + 1] = ""; CHAR strSQLText[MAX_SQL_LENGTH + 1] = ""; INT iRetCode = 0; try { if (g_pADODatabase != NULL && g_pADODatabase->IsOpen()) { sprintf(strSQLText, "update t_dev_variant_item set startbit = %d, endbit = %d where id = %d and uid = \'%s\'", nStartBit, nEndBit, nID, pUid); iRetCode = g_pADODatabase->Execute(strSQLText); } } catch (_com_error &e) { //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage()); //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg)); return 0; } return iRetCode; } //插入变量状态描述 INT InsertVarStatusInfo(int nID, CHAR *pUid, int nVarID, int nStatusID, CHAR *pStatusDesc) { CHAR strMsg[MAX_MSG_LENGTH + 1] = ""; CHAR strSQLText[MAX_SQL_LENGTH + 1] = ""; INT iRetCode = 0; try { if (g_pADODatabase != NULL && g_pADODatabase->IsOpen()) { sprintf(strSQLText, "insert into t_var_status(id, devuid, varid, statusid, statusdesc, normalstatus) values(" \ "%d, \'%s\', %d, %d, \'%s\', %d)", nID, pUid, nVarID, nStatusID, pStatusDesc, 0); iRetCode = g_pADODatabase->Execute(strSQLText); } } catch (_com_error &e) { //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage()); //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg)); return 0; } return iRetCode; } //删除变量状态描述 INT DeleteVarStatusInfo(CHAR *pUid, int nVarID) { CHAR strMsg[MAX_MSG_LENGTH + 1] = ""; CHAR strSQLText[MAX_SQL_LENGTH + 1] = ""; INT iRetCode = 0; try { if (g_pADODatabase != NULL && g_pADODatabase->IsOpen()) { sprintf(strSQLText, "delete from t_var_status where devuid = \'%s\' and varid = %d ", pUid, nVarID); iRetCode = g_pADODatabase->Execute(strSQLText); } } catch (_com_error &e) { //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage()); //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg)); return 0; } return iRetCode; } //清空表 INT CleanTable( CHAR *pTableName ) { CHAR strMsg[MAX_MSG_LENGTH + 1] = ""; CHAR strSQLText[MAX_SQL_LENGTH + 1] = ""; INT iRetCode = 0; try { if (g_pADODatabase != NULL && g_pADODatabase->IsOpen()) { sprintf(strSQLText, "delete from %s where id >0 ", pTableName); iRetCode = g_pADODatabase->Execute(strSQLText); } } catch (_com_error &e) { //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage()); //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg)); return 0; } return iRetCode; } //获取变量报警状态最大的ID INT GetVarStatusMaxID( CHAR *pMaxID ) { CHAR strMsg[MAX_MSG_LENGTH + 1] = ""; CHAR strSQLText[MAX_SQL_LENGTH + 1] = ""; CString strID; CADORecordset* pRSet = NULL; INT iRetCode = 0; int nCount = 0; try { if (g_pADODatabase != NULL && g_pADODatabase->IsOpen()) { pRSet = new CADORecordset(g_pADODatabase); if (NULL == pRSet) { return -1; } sprintf(strSQLText, "select max(id) as maxid from t_var_status"); iRetCode = pRSet->Open(strSQLText, CADORecordset::openQuery); if (iRetCode == 0) { delete pRSet; pRSet = NULL; return -1; } nCount = pRSet->GetRecordCount(); if (nCount == 0) { if( pRSet ) { delete pRSet; pRSet = NULL; } return 0; } // 获取最大的设备ID if (!pRSet->IsFieldNull("maxid")) { pRSet->GetFieldValue("maxid", strID); strcpy(pMaxID, (char *)(LPCTSTR)strID); } if( pRSet ) { delete pRSet; pRSet = NULL; } return nCount; } } catch (_com_error &e) { if( pRSet ) { delete pRSet; pRSet = NULL; } //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage()); //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg)); return -1; } if( pRSet ) { delete pRSet; pRSet = NULL; } return 0; } int GetFieldValueList1(char *pSql, list& list1) { CHAR strMsg[MAX_MSG_LENGTH + 1] = ""; CHAR strSQLText[MAX_SQL_LENGTH + 1] = ""; CString strID; CADORecordset* pRSet = NULL; INT iRetCode = 0; int nCount = 0; _variant_t vtFieldValue; try { if (g_pADODatabase != NULL && g_pADODatabase->IsOpen()) { pRSet = new CADORecordset(g_pADODatabase); if (NULL == pRSet) { return -1; } //sprintf(strSQLText, "select max(id) as maxid from t_var_status"); iRetCode = pRSet->Open(pSql, CADORecordset::openQuery); if (iRetCode == 0) { delete pRSet; pRSet = NULL; return -1; } nCount = pRSet->GetRecordCount(); if (nCount == 0) { if( pRSet ) { delete pRSet; pRSet = NULL; } return 0; } for( int i = 0; i < nCount; i++ ) { if( pRSet->GetFieldCount() >= 1 ) { if( !pRSet->IsFieldNull(0) ) { pRSet->GetFieldValue(0, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list1.insert(list1.end(), strFieldValue); } else { list1.insert(list1.end(), ""); }// end if( !pRSet->IsFieldNull(0) ) }// end if( pRSet->GetFieldCount() >= 2 ) pRSet->MoveNext(); }// end for( int i = 0; i < nRecordCount; i++ ) if( pRSet ) { delete pRSet; pRSet = NULL; } return nCount; } } catch (_com_error &e) { if( pRSet ) { delete pRSet; pRSet = NULL; } //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage()); //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg)); return -1; } if( pRSet ) { delete pRSet; pRSet = NULL; } return 0; } int GetFieldValueList2(char *pSql, list& list1, list& list2) { CHAR strMsg[MAX_MSG_LENGTH + 1] = ""; CHAR strSQLText[MAX_SQL_LENGTH + 1] = ""; CString strID; CADORecordset* pRSet = NULL; INT iRetCode = 0; int nCount = 0; _variant_t vtFieldValue; try { if (g_pADODatabase != NULL && g_pADODatabase->IsOpen()) { pRSet = new CADORecordset(g_pADODatabase); if (NULL == pRSet) { return -1; } //sprintf(strSQLText, "select max(id) as maxid from t_var_status"); iRetCode = pRSet->Open(pSql, CADORecordset::openQuery); if (iRetCode == 0) { delete pRSet; pRSet = NULL; return -1; } nCount = pRSet->GetRecordCount(); if (nCount == 0) { if( pRSet ) { delete pRSet; pRSet = NULL; } return 0; } for( int i = 0; i < nCount; i++ ) { if( pRSet->GetFieldCount() >= 2 ) { if( !pRSet->IsFieldNull(0) ) { pRSet->GetFieldValue(0, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list1.insert(list1.end(), strFieldValue); } else { list1.insert(list1.end(), ""); }// end if( !pRSet->IsFieldNull(0) ) if( !pRSet->IsFieldNull(1) ) { pRSet->GetFieldValue(1, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list2.insert(list2.end(), strFieldValue); } else { list2.insert(list2.end(), ""); }// end if( !pRSet->IsFieldNull(1) ) }// end if( pRSet->GetFieldCount() >= 2 ) pRSet->MoveNext(); }// end for( int i = 0; i < nRecordCount; i++ ) if( pRSet ) { delete pRSet; pRSet = NULL; } return nCount; } } catch (_com_error &e) { if( pRSet ) { delete pRSet; pRSet = NULL; } //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage()); //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg)); return -1; } if( pRSet ) { delete pRSet; pRSet = NULL; } return 0; } int GetFieldValueList3(char *pSql, list& list1, list& list2, list& list3) { CHAR strMsg[MAX_MSG_LENGTH + 1] = ""; CHAR strSQLText[MAX_SQL_LENGTH + 1] = ""; CString strID; CADORecordset* pRSet = NULL; INT iRetCode = 0; int nCount = 0; _variant_t vtFieldValue; try { if (g_pADODatabase != NULL && g_pADODatabase->IsOpen()) { pRSet = new CADORecordset(g_pADODatabase); if (NULL == pRSet) { return -1; } //sprintf(strSQLText, "select max(id) as maxid from t_var_status"); iRetCode = pRSet->Open(pSql, CADORecordset::openQuery); if (iRetCode == 0) { delete pRSet; pRSet = NULL; return -1; } nCount = pRSet->GetRecordCount(); if (nCount == 0) { if( pRSet ) { delete pRSet; pRSet = NULL; } return 0; } for( int i = 0; i < nCount; i++ ) { if( pRSet->GetFieldCount() >= 2 ) { if( !pRSet->IsFieldNull(0) ) { pRSet->GetFieldValue(0, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list1.insert(list1.end(), strFieldValue); } else { list1.insert(list1.end(), ""); }// end if( !pRSet->IsFieldNull(0) ) if( !pRSet->IsFieldNull(1) ) { pRSet->GetFieldValue(1, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list2.insert(list2.end(), strFieldValue); } else { list2.insert(list2.end(), ""); }// end if( !pRSet->IsFieldNull(1) ) if( !pRSet->IsFieldNull(2) ) { pRSet->GetFieldValue(2, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list3.insert(list3.end(), strFieldValue); } else { list3.insert(list3.end(), ""); }// end if( !pRSet->IsFieldNull(1) ) }// end if( pRSet->GetFieldCount() >= 2 ) pRSet->MoveNext(); }// end for( int i = 0; i < nRecordCount; i++ ) if( pRSet ) { delete pRSet; pRSet = NULL; } return nCount; } } catch (_com_error &e) { if( pRSet ) { delete pRSet; pRSet = NULL; } //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage()); //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg)); return -1; } if( pRSet ) { delete pRSet; pRSet = NULL; } return 0; } int GetFieldValueList6(char *pSql,list& list1,list& list2,list& list3,list& list4,list& list5,list& list6) { CHAR strMsg[MAX_MSG_LENGTH + 1] = ""; CHAR strSQLText[MAX_SQL_LENGTH + 1] = ""; CString strID; CADORecordset* pRSet = NULL; INT iRetCode = 0; int nCount = 0; _variant_t vtFieldValue; try { if (g_pADODatabase != NULL && g_pADODatabase->IsOpen()) { pRSet = new CADORecordset(g_pADODatabase); if (NULL == pRSet) { return -1; } //sprintf(strSQLText, "select max(id) as maxid from t_var_status"); iRetCode = pRSet->Open(pSql, CADORecordset::openQuery); if (iRetCode == 0) { delete pRSet; pRSet = NULL; return -1; } nCount = pRSet->GetRecordCount(); if (nCount == 0) { if( pRSet ) { delete pRSet; pRSet = NULL; } return 0; } for( int i = 0; i < nCount; i++ ) { if( pRSet->GetFieldCount() >= 5 ) { if( !pRSet->IsFieldNull(0) ) { pRSet->GetFieldValue(0, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list1.insert(list1.end(), strFieldValue); } else { list1.insert(list1.end(), ""); } if( !pRSet->IsFieldNull(1) ) { pRSet->GetFieldValue(1, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list2.insert(list2.end(), strFieldValue); } else { list2.insert(list2.end(), ""); } if( !pRSet->IsFieldNull(2) ) { pRSet->GetFieldValue(2, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list3.insert(list3.end(), strFieldValue); } else { list3.insert(list3.end(), ""); } if( !pRSet->IsFieldNull(3) ) { pRSet->GetFieldValue(3, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list4.insert(list4.end(), strFieldValue); } else { list4.insert(list4.end(), ""); } if( !pRSet->IsFieldNull(4) ) { pRSet->GetFieldValue(4, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list5.insert(list5.end(), strFieldValue); } else { list5.insert(list5.end(), ""); } if( !pRSet->IsFieldNull(5) ) { pRSet->GetFieldValue(5, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list6.insert(list6.end(), strFieldValue); } else { list6.insert(list6.end(), ""); } } pRSet->MoveNext(); }// end for( int i = 0; i < nRecordCount; i++ ) if( pRSet ) { delete pRSet; pRSet = NULL; } return nCount; } } catch (_com_error &e) { if( pRSet ) { delete pRSet; pRSet = NULL; } //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage()); //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg)); return -1; } if( pRSet ) { delete pRSet; pRSet = NULL; } return 0; } int GetFieldValueList9(char *pSql,list& list1,list& list2,list& list3,list& list4,list& list5,list& list6,list& list7,list& list8,list& list9) { CHAR strMsg[MAX_MSG_LENGTH + 1] = ""; CHAR strSQLText[MAX_SQL_LENGTH + 1] = ""; CString strID; CADORecordset* pRSet = NULL; INT iRetCode = 0; int nCount = 0; _variant_t vtFieldValue; try { if (g_pADODatabase != NULL && g_pADODatabase->IsOpen()) { pRSet = new CADORecordset(g_pADODatabase); if (NULL == pRSet) { return -1; } //sprintf(strSQLText, "select max(id) as maxid from t_var_status"); iRetCode = pRSet->Open(pSql, CADORecordset::openQuery); if (iRetCode == 0) { delete pRSet; pRSet = NULL; return -1; } nCount = pRSet->GetRecordCount(); if (nCount == 0) { if( pRSet ) { delete pRSet; pRSet = NULL; } return 0; } for( int i = 0; i < nCount; i++ ) { if( pRSet->GetFieldCount() >= 5 ) { if( !pRSet->IsFieldNull(0) ) { pRSet->GetFieldValue(0, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list1.insert(list1.end(), strFieldValue); } else { list1.insert(list1.end(), ""); } if( !pRSet->IsFieldNull(1) ) { pRSet->GetFieldValue(1, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list2.insert(list2.end(), strFieldValue); } else { list2.insert(list2.end(), ""); } if( !pRSet->IsFieldNull(2) ) { pRSet->GetFieldValue(2, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list3.insert(list3.end(), strFieldValue); } else { list3.insert(list3.end(), ""); } if( !pRSet->IsFieldNull(3) ) { pRSet->GetFieldValue(3, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list4.insert(list4.end(), strFieldValue); } else { list4.insert(list4.end(), ""); } if( !pRSet->IsFieldNull(4) ) { pRSet->GetFieldValue(4, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list5.insert(list5.end(), strFieldValue); } else { list5.insert(list5.end(), ""); } if( !pRSet->IsFieldNull(5) ) { pRSet->GetFieldValue(5, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list6.insert(list6.end(), strFieldValue); } else { list6.insert(list6.end(), ""); } if( !pRSet->IsFieldNull(6) ) { pRSet->GetFieldValue(6, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list7.insert(list7.end(), strFieldValue); } else { list7.insert(list7.end(), ""); } if( !pRSet->IsFieldNull(7) ) { pRSet->GetFieldValue(7, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list8.insert(list8.end(), strFieldValue); } else { list8.insert(list8.end(), ""); } if( !pRSet->IsFieldNull(8) ) { pRSet->GetFieldValue(8, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list9.insert(list9.end(), strFieldValue); } else { list9.insert(list9.end(), ""); } } pRSet->MoveNext(); }// end for( int i = 0; i < nRecordCount; i++ ) if( pRSet ) { delete pRSet; pRSet = NULL; } return nCount; } } catch (_com_error &e) { if( pRSet ) { delete pRSet; pRSet = NULL; } //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage()); //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg)); return -1; } if( pRSet ) { delete pRSet; pRSet = NULL; } return 0; } int GetFieldValueList13(char *pSql,list& list1,list& list2,list& list3,list& list4,list& list5,list& list6, list& list7,list& list8,list& list9,list& list10,list& list11,list& list12,list& list13) { CHAR strMsg[MAX_MSG_LENGTH + 1] = ""; CHAR strSQLText[MAX_SQL_LENGTH + 1] = ""; CString strID; CADORecordset* pRSet = NULL; INT iRetCode = 0; int nCount = 0; _variant_t vtFieldValue; try { if (g_pADODatabase != NULL && g_pADODatabase->IsOpen()) { pRSet = new CADORecordset(g_pADODatabase); if (NULL == pRSet) { return -1; } //sprintf(strSQLText, "select max(id) as maxid from t_var_status"); iRetCode = pRSet->Open(pSql, CADORecordset::openQuery); if (iRetCode == 0) { delete pRSet; pRSet = NULL; return -1; } nCount = pRSet->GetRecordCount(); if (nCount == 0) { if( pRSet ) { delete pRSet; pRSet = NULL; } return 0; } for( int i = 0; i < nCount; i++ ) { if( pRSet->GetFieldCount() >= 13 ) { if( !pRSet->IsFieldNull(0) ) { pRSet->GetFieldValue(0, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list1.insert(list1.end(), strFieldValue); } else { list1.insert(list1.end(), ""); } if( !pRSet->IsFieldNull(1) ) { pRSet->GetFieldValue(1, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list2.insert(list2.end(), strFieldValue); } else { list2.insert(list2.end(), ""); } if( !pRSet->IsFieldNull(2) ) { pRSet->GetFieldValue(2, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list3.insert(list3.end(), strFieldValue); } else { list3.insert(list3.end(), ""); } if( !pRSet->IsFieldNull(3) ) { pRSet->GetFieldValue(3, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list4.insert(list4.end(), strFieldValue); } else { list4.insert(list4.end(), ""); } if( !pRSet->IsFieldNull(4) ) { pRSet->GetFieldValue(4, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list5.insert(list5.end(), strFieldValue); } else { list5.insert(list5.end(), ""); } if( !pRSet->IsFieldNull(5) ) { pRSet->GetFieldValue(5, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list6.insert(list6.end(), strFieldValue); } else { list6.insert(list6.end(), ""); } if( !pRSet->IsFieldNull(6) ) { pRSet->GetFieldValue(6, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list7.insert(list7.end(), strFieldValue); } else { list7.insert(list7.end(), ""); } if( !pRSet->IsFieldNull(7) ) { pRSet->GetFieldValue(7, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list8.insert(list8.end(), strFieldValue); } else { list8.insert(list8.end(), ""); } if( !pRSet->IsFieldNull(8) ) { pRSet->GetFieldValue(8, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list9.insert(list9.end(), strFieldValue); } else { list9.insert(list9.end(), ""); } if( !pRSet->IsFieldNull(9) ) { pRSet->GetFieldValue(9, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list10.insert(list10.end(), strFieldValue); } else { list10.insert(list10.end(), ""); } if( !pRSet->IsFieldNull(10) ) { pRSet->GetFieldValue(10, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list11.insert(list11.end(), strFieldValue); } else { list11.insert(list11.end(), ""); } if( !pRSet->IsFieldNull(11) ) { pRSet->GetFieldValue(11, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list12.insert(list12.end(), strFieldValue); } else { list12.insert(list12.end(), ""); } if( !pRSet->IsFieldNull(12) ) { pRSet->GetFieldValue(12, vtFieldValue); string strFieldValue = string((char*)(_bstr_t)vtFieldValue); list13.insert(list13.end(), strFieldValue); } else { list13.insert(list13.end(), ""); } } pRSet->MoveNext(); }// end for( int i = 0; i < nRecordCount; i++ ) if( pRSet ) { delete pRSet; pRSet = NULL; } return nCount; } } catch (_com_error &e) { if( pRSet ) { delete pRSet; pRSet = NULL; } //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage()); //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg)); return -1; } if( pRSet ) { delete pRSet; pRSet = NULL; } return 0; } //更新变量是否要SNMP发送 INT UpdateVarSnmpStatus( int nID, bool bStatus ) { CHAR strMsg[MAX_MSG_LENGTH + 1] = ""; CHAR strSQLText[MAX_SQL_LENGTH + 1] = ""; INT iRetCode = 0; try { if (g_pADODatabase != NULL && g_pADODatabase->IsOpen()) { sprintf(strSQLText, "update t_dev_variant set boolreserved4 = \'%d\' where id = %d ",bStatus, nID); iRetCode = g_pADODatabase->Execute(strSQLText); } } catch (_com_error &e) { //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage()); //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg)); return 0; } return iRetCode; }