DBConnection.cpp 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644
  1. ///////////////////////////////////////////////////////////
  2. //
  3. // File:
  4. // DBConnection.cpp
  5. // Author:
  6. // 严晓斌
  7. // Date:
  8. // 2008-05-23
  9. // Comments:
  10. // 主要处理数据库连接任务
  11. //
  12. ///////////////////////////////////////////////////////////
  13. #include "stdafx.h"
  14. #include "Global.h"
  15. //#include <windows.h>
  16. #include <stdio.h>
  17. #include <stdlib.h>
  18. #include <memory.h>
  19. //#include "Ado.h"
  20. #include "DBConnection.h"
  21. //#include <list>
  22. HANDLE m_hDBConnectionThread = NULL;
  23. BOOL m_bBeep = FALSE;
  24. BOOL m_bDBConnected = FALSE;
  25. BOOL DBConnectionThreadStart()
  26. {
  27. HANDLE hThread = NULL;
  28. INT iConfMemberIndex = 0;
  29. INT iConfGroupIndex = 0;
  30. //数据库连接串
  31. if (!_stricmp(g_strDBType, "SQL SERVER"))
  32. sprintf(g_strConnectString, "Provider=sqloledb;Data Source=%s,1433;Initial Catalog=%s;User Id=%s;Password=%s; ",
  33. g_strServerName, g_strDataBaseName, g_strUserName, g_strPassword);
  34. else if (!_stricmp(g_strDBType, "ACCESS97"))
  35. sprintf(g_strConnectString, "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=%s", g_strAccessFile);
  36. else if (!_stricmp(g_strDBType, "ACCESS2000"))
  37. sprintf(g_strConnectString, "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s", g_strAccessFile);
  38. else if(!_stricmp(g_strDBType, "PGSQL"))
  39. sprintf(g_strConnectString, "DRIVER={PostgreSQL ODBC Driver(UNICODE)}; SERVER=%s; port=5432; DATABASE=%s; UID=%s; PWD=%s;",
  40. g_strServerName, g_strDataBaseName, g_strUserName, g_strPassword);
  41. else
  42. sprintf(g_strConnectString, "Provider=sqloledb;Data Source=%s;Initial Catalog=%s;User Id=%s;Password=%s; ",
  43. g_strServerName, g_strDataBaseName, g_strUserName, g_strPassword);
  44. g_pADODatabase = new CADODatabase;
  45. if (g_pADODatabase != NULL)
  46. {
  47. g_pADODatabase->SetConnectionString(g_strConnectString);
  48. if (FALSE == g_pADODatabase->Open())
  49. {
  50. g_pADODatabase->Close();
  51. delete g_pADODatabase;
  52. g_pADODatabase = NULL;
  53. m_bBeep = TRUE;
  54. }
  55. else
  56. {
  57. m_bDBConnected = TRUE;
  58. }
  59. }
  60. return TRUE;
  61. }
  62. BOOL DBConnectionThreadEnd()
  63. {
  64. if ((g_pADODatabase != NULL) && (g_pADODatabase->IsOpen()))
  65. {
  66. g_pADODatabase->Close();
  67. delete g_pADODatabase;
  68. g_pADODatabase = NULL;
  69. }
  70. return TRUE;
  71. }
  72. //获取表最大的ID, 通用函数
  73. INT GetMaxID( CHAR *pTableName, CHAR *pFieldName, CHAR *pMaxID )
  74. {
  75. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  76. list<string> list1;
  77. list<string>::iterator it;
  78. sprintf(strSQLText, "select max(%s) as maxid from %s", pFieldName, pTableName);
  79. int nRet = GetFieldValueList1(strSQLText, list1);
  80. if( 0 == list1.size() )
  81. {
  82. return 0;
  83. }
  84. if( nRet != -1 )
  85. {
  86. strcpy(pMaxID, list1.begin()->c_str());
  87. }
  88. for( it = list1.begin(); it != list1.end(); )
  89. {
  90. list1.erase(it++);
  91. }
  92. return nRet;
  93. }
  94. //获取t_dev_variant变量属性表字段ID的最大值
  95. INT GetVarMaxID( CHAR *pMaxID )
  96. {
  97. CHAR strMsg[MAX_MSG_LENGTH + 1] = "";
  98. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  99. CString strID;
  100. CADORecordset* pRSet = NULL;
  101. INT iRetCode = 0;
  102. int nCount = 0;
  103. try
  104. {
  105. if (g_pADODatabase != NULL && g_pADODatabase->IsOpen())
  106. {
  107. pRSet = new CADORecordset(g_pADODatabase);
  108. if (NULL == pRSet)
  109. {
  110. return -1;
  111. }
  112. sprintf(strSQLText, "select max(id) as maxid from t_dev_variant");
  113. iRetCode = pRSet->Open(strSQLText, CADORecordset::openQuery);
  114. if (iRetCode == 0)
  115. {
  116. delete pRSet;
  117. pRSet = NULL;
  118. return -1;
  119. }
  120. nCount = pRSet->GetRecordCount();
  121. if (nCount == 0)
  122. {
  123. if( pRSet )
  124. {
  125. delete pRSet;
  126. pRSet = NULL;
  127. }
  128. return 0;
  129. }
  130. // 获取最大的设备ID
  131. if (!pRSet->IsFieldNull("maxid"))
  132. {
  133. pRSet->GetFieldValue("maxid", strID);
  134. strcpy(pMaxID, (char *)(LPCTSTR)strID);
  135. }
  136. if( pRSet )
  137. {
  138. delete pRSet;
  139. pRSet = NULL;
  140. }
  141. return nCount;
  142. }
  143. }
  144. catch (_com_error &e)
  145. {
  146. if( pRSet )
  147. {
  148. delete pRSet;
  149. pRSet = NULL;
  150. }
  151. //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage());
  152. //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg));
  153. return -1;
  154. }
  155. if( pRSet )
  156. {
  157. delete pRSet;
  158. pRSet = NULL;
  159. }
  160. return 0;
  161. }
  162. //插入设备资料
  163. INT InsertVarInfo(int nID, CHAR *pUid, CHAR *pVarName, CHAR *pDesc, int nVarTypeID, int nDataLen,
  164. CHAR *pOnDesc, CHAR *pOffDesc, int nMaxValues, int nMinValues,
  165. int nMaxScale, int nMinScale, int nLowerLimit, int nUpperLimit,
  166. int nNormalState, CHAR *pSetValue, int nRearm, int nOffset, CHAR *pUnit,
  167. int nCollentFreq, float fCoef, int nWarnLevel, int nReadOnly, int nIsSave,
  168. int nRealtimeFlag, int nRecCurve, int nIsDDE, int nRegNum, int nFuncID,
  169. int nChildID, int nVarItemID, CHAR *pSnmpOid, CHAR *pField, int nDevID,
  170. int nRegStartAddr, CHAR *pRs232Cmd, CHAR *pRs232Type, int nRs232Index,
  171. int nIdentifyTime, int nReDetectTime, int nNormIsNotice,
  172. char *pStrReserved1, char *pStrReserved2, char *pStrReserved3, char *pStrReserved4,
  173. char *pStrReserved5, char *pStrReserved6, char *pStrReserved7, char *pStrReserved8,
  174. char *pStrReserved9, char *pStrReserved10,
  175. int nReserved1, int nReserved2, int nReserved3, int nReserved4, int nReserved5,
  176. int nReserved6, int nReserved7, int nReserved8, int nReserved9, int nReserved10,
  177. int bReserved1, int bReserved2, int bReserved3, int bReserved4, int bReserved5,
  178. int bReserved6, int bReserved7, int bReserved8, int bReserved9, int bReserved10)
  179. {
  180. CHAR strMsg[MAX_MSG_LENGTH + 1] = "";
  181. CHAR strSQLText[409600] = "";
  182. INT iRetCode = 0;
  183. CString strIsDDE, strRecCurve, strRealtimeFlag, strIsSave, strNormalIsNotice, strReadOnly;
  184. CString strbResrved1, strbResrved2, strbResrved3, strbResrved4, strbResrved5;
  185. CString strbResrved6, strbResrved7, strbResrved8, strbResrved9, strbResrved10;
  186. strIsDDE = (nIsDDE == 0)?"FALSE":"TRUE";
  187. strRecCurve = (nRecCurve == 0)?"FALSE":"TRUE";
  188. strRealtimeFlag = (nRealtimeFlag == 0)?"FALSE":"TRUE";
  189. strIsSave = (nIsSave == 0)?"FALSE":"TRUE";
  190. strNormalIsNotice = (nNormIsNotice == 0)?"FALSE":"TRUE";
  191. strbResrved1 = (bReserved1 == 0)?"FALSE":"TRUE";
  192. strbResrved2 = (bReserved2 == 0)?"FALSE":"TRUE";
  193. strbResrved3 = (bReserved3 == 0)?"FALSE":"TRUE";
  194. strbResrved4 = (bReserved4 == 0)?"FALSE":"TRUE";
  195. strbResrved5 = (bReserved5 == 0)?"FALSE":"TRUE";
  196. strbResrved6 = (bReserved6 == 0)?"FALSE":"TRUE";
  197. strbResrved7 = (bReserved7 == 0)?"FALSE":"TRUE";
  198. strbResrved8 = (bReserved8 == 0)?"FALSE":"TRUE";
  199. strbResrved9 = (bReserved9 == 0)?"FALSE":"TRUE";
  200. strbResrved10 = (bReserved10 == 0)?"FALSE":"TRUE";
  201. strReadOnly.Format("%d", nReadOnly);
  202. try
  203. {
  204. if (g_pADODatabase != NULL && g_pADODatabase->IsOpen())
  205. {
  206. if (!_stricmp(g_strDBType, "SQL SERVER"))
  207. {
  208. sprintf(strSQLText, "insert into t_dev_variant(id, uid, varname, description, vartypeid, " \
  209. "datalen, ondesc, offdesc, maxvalues, minvalues, maxconvtrate, minconvtrate, " \
  210. "lowerlimit, upperlimit, normalstate, setvalue, rearm, [offsets], unit, collectfrequence, " \
  211. "coefficient, warnlevel, readonly, issave, realtimeflag, reccurve, isdde, " \
  212. "registernum, funcid, childid, var_item_id, snmpoid, fields, devtypeid, address, " \
  213. "rs232cmd, rs232type, rs232index, identifytime, redetecttime, normalisnotice, " \
  214. "strreserved1, strreserved2, strreserved3, strreserved4, strreserved5, " \
  215. "strreserved6, strreserved7, strreserved8, strreserved9, strreserved10, "\
  216. "intreserved1, intreserved2, intreserved3, intreserved4, intreserved5, " \
  217. "intreserved6, intreserved7, intreserved8, intreserved9, intreserved10, " \
  218. "boolreserved1, boolreserved2, boolreserved3, boolreserved4, boolreserved5, " \
  219. "boolreserved6, boolreserved7, boolreserved8, boolreserved9, boolreserved10) values(" \
  220. "%d, \'%s\', \'%s\', \'%s\', %d, " \
  221. "%d, \'%s\', \'%s\', %d, %d, %d, %d, " \
  222. "%d, %d, %d, \'%s\', %d, %d, \'%s\', %d," \
  223. "%.10f, %d, \'%s\', %d, %d, %d, %d," \
  224. "%d, %d, %d, %d, \'%s\', \'%s\', %d, %d, " \
  225. "\'%s\', \'%s\', %d, %d, %d, %d, " \
  226. "\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', " \
  227. "\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', " \
  228. "%d, %d, %d, %d, %d, " \
  229. "%d, %d, %d, %d, %d, " \
  230. "%d, %d, %d, %d, %d, " \
  231. "%d, %d, %d, %d, %d)",
  232. nID, pUid, pVarName, pDesc, nVarTypeID,
  233. nDataLen, pOnDesc, pOffDesc, nMaxValues, nMinValues, nMaxScale, nMinScale,
  234. nLowerLimit, nUpperLimit, nNormalState, pSetValue, nRearm, nOffset, pUnit, nCollentFreq,
  235. fCoef, nWarnLevel, strReadOnly, nIsSave, nRealtimeFlag, nRecCurve, nIsDDE,
  236. nRegNum, nFuncID, nChildID, nVarItemID, pSnmpOid, pField, nDevID, nRegStartAddr,
  237. pRs232Cmd, pRs232Type, nRs232Index, nIdentifyTime, nReDetectTime, nNormIsNotice,
  238. pStrReserved1, pStrReserved2, pStrReserved3, pStrReserved4, pStrReserved5,
  239. pStrReserved6, pStrReserved7, pStrReserved8, pStrReserved9, pStrReserved10,
  240. nReserved1, nReserved2, nReserved3, nReserved4, nReserved5,
  241. nReserved6, nReserved7, nReserved8, nReserved9, nReserved10,
  242. bReserved1, bReserved2, bReserved3, bReserved4, bReserved5,
  243. bReserved6, bReserved7, bReserved8, bReserved9, bReserved10);
  244. }
  245. else if (!_stricmp(g_strDBType, "ACCESS97"))
  246. {
  247. sprintf(strSQLText, "select tel, mobiletel, fax, email from " \
  248. "t_role_equip a left outer join t_user_info b on a.userid = b.uid " \
  249. "where a.uid = \'%s\' and b.status = 0 or b.status is null and b.uid <> 'admin'",
  250. pUid);
  251. }
  252. else if (!_stricmp(g_strDBType, "ACCESS2000"))
  253. {
  254. sprintf(strSQLText, "select tel, mobiletel, fax, email from " \
  255. "t_role_equip a left outer join t_user_info b on a.userid = b.uid " \
  256. "where a.uid = \'%s\' and b.status = 0 or b.status is null and b.uid <> 'admin'",
  257. pUid);
  258. }
  259. else if(!_stricmp(g_strDBType, "PGSQL"))
  260. {
  261. sprintf(strSQLText, "insert into t_dev_variant(id, uid, varname, description, vartypeid, " \
  262. "datalen, ondesc, offdesc, maxvalues, minvalues, maxconvtrate, minconvtrate, " \
  263. "lowerlimit, upperlimit, normalstate, setvalue, rearm, offsets, unit, collectfrequence, " \
  264. "coefficient, warnlevel, readonly, issave, realtimeflag, reccurve, isdde, " \
  265. "registernum, funcid, childid, var_item_id, snmpoid, fields, devtypeid, address, " \
  266. "rs232cmd, rs232type, rs232index, identifytime, redetecttime, normalisnotice, " \
  267. "strreserved1, strreserved2, strreserved3, strreserved4, strreserved5, " \
  268. "strreserved6, strreserved7, strreserved8, strreserved9, strreserved10, "\
  269. "intreserved1, intreserved2, intreserved3, intreserved4, intreserved5, " \
  270. "intreserved6, intreserved7, intreserved8, intreserved9, intreserved10, " \
  271. "boolreserved1, boolreserved2, boolreserved3, boolreserved4, boolreserved5, " \
  272. "boolreserved6, boolreserved7, boolreserved8, boolreserved9, boolreserved10) values(" \
  273. "%d, \'%s\', \'%s\', \'%s\', %d, " \
  274. "%d, \'%s\', \'%s\', %d, %d, %d, %d, " \
  275. "%d, %d, %d, \'%s\', %d, %d, \'%s\', %d," \
  276. "%.10f, %d, \'%s\', %s, %s, %s, %s," \
  277. "%d, %d, %d, %d, \'%s\', \'%s\', %d, %d, " \
  278. "\'%s\', \'%s\', %d, %d, %d, %s, " \
  279. "\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', " \
  280. "\'%s\', \'%s\', \'%s\', \'%s\', \'%s\', " \
  281. "%d, %d, %d, %d, %d, " \
  282. "%d, %d, %d, %d, %d, " \
  283. "%s, %s, %s, %s, %s, " \
  284. "%s, %s, %s, %s, %s)",
  285. nID, pUid, pVarName, pDesc, nVarTypeID,
  286. nDataLen, pOnDesc, pOffDesc, nMaxValues, nMinValues, nMaxScale, nMinScale,
  287. nLowerLimit, nUpperLimit, nNormalState, pSetValue, nRearm, nOffset, pUnit, nCollentFreq,
  288. fCoef, nWarnLevel, strReadOnly, strIsSave, strRealtimeFlag, strRecCurve, strIsDDE,
  289. nRegNum, nFuncID, nChildID, nVarItemID, pSnmpOid, pField, nDevID, nRegStartAddr,
  290. pRs232Cmd, pRs232Type, nRs232Index, nIdentifyTime, nReDetectTime, strNormalIsNotice,
  291. pStrReserved1, pStrReserved2, pStrReserved3, pStrReserved4, pStrReserved5,
  292. pStrReserved6, pStrReserved7, pStrReserved8, pStrReserved9, pStrReserved10,
  293. nReserved1, nReserved2, nReserved3, nReserved4, nReserved5,
  294. nReserved6, nReserved7, nReserved8, nReserved9, nReserved10,
  295. strbResrved1, strbResrved2, strbResrved3, strbResrved4, strbResrved5,
  296. strbResrved6, strbResrved7, strbResrved8, strbResrved9, strbResrved10);
  297. }
  298. iRetCode = g_pADODatabase->Execute(strSQLText);
  299. }
  300. }
  301. catch (_com_error &e)
  302. {
  303. //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage());
  304. //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg));
  305. return 0;
  306. }
  307. return iRetCode;
  308. }
  309. //获取t_dev_variant_item资料
  310. INT GetVarItem( CHAR *pUid, int nVarItemID )
  311. {
  312. CHAR strMsg[MAX_MSG_LENGTH + 1] = "";
  313. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  314. CString strID;
  315. CADORecordset* pRSet = NULL;
  316. INT iRetCode = 0;
  317. int nCount = 0;
  318. try
  319. {
  320. if (g_pADODatabase != NULL && g_pADODatabase->IsOpen())
  321. {
  322. pRSet = new CADORecordset(g_pADODatabase);
  323. if (NULL == pRSet)
  324. {
  325. return -1;
  326. }
  327. sprintf(strSQLText, "select id from t_dev_variant_item where uid = \'%s\' and id = %d", pUid, nVarItemID);
  328. iRetCode = pRSet->Open(strSQLText, CADORecordset::openQuery);
  329. if (iRetCode == 0)
  330. {
  331. delete pRSet;
  332. pRSet = NULL;
  333. return -1;
  334. }
  335. nCount = pRSet->GetRecordCount();
  336. if (nCount == 0)
  337. {
  338. if( pRSet )
  339. {
  340. delete pRSet;
  341. pRSet = NULL;
  342. }
  343. return 0;
  344. }
  345. if( pRSet )
  346. {
  347. delete pRSet;
  348. pRSet = NULL;
  349. }
  350. return nCount;
  351. }
  352. }
  353. catch (_com_error &e)
  354. {
  355. if( pRSet )
  356. {
  357. delete pRSet;
  358. pRSet = NULL;
  359. }
  360. //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage());
  361. //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg));
  362. return -1;
  363. }
  364. if( pRSet )
  365. {
  366. delete pRSet;
  367. pRSet = NULL;
  368. }
  369. return 0;
  370. }
  371. //插入Bit位表
  372. INT InsertVarItemInfo(int nID, CHAR *pUid, int nStartBit, int nEndBit)
  373. {
  374. CHAR strMsg[MAX_MSG_LENGTH + 1] = "";
  375. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  376. INT iRetCode = 0;
  377. try
  378. {
  379. if (g_pADODatabase != NULL && g_pADODatabase->IsOpen())
  380. {
  381. sprintf(strSQLText, "insert into t_dev_variant_item(id, uid, startbit, endbit) values(" \
  382. "%d, \'%s\', %d, %d)",
  383. nID, pUid, nStartBit, nEndBit);
  384. iRetCode = g_pADODatabase->Execute(strSQLText);
  385. }
  386. }
  387. catch (_com_error &e)
  388. {
  389. //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage());
  390. //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg));
  391. return 0;
  392. }
  393. return iRetCode;
  394. }
  395. //插入数据记录
  396. INT InsertDataRecord(
  397. CHAR* pDevName, // 设备名称
  398. CHAR* pHappenTime, // 发生时间
  399. CHAR* pVarName, // 变量名称
  400. CHAR *pVarDesc, // 变量描述
  401. double dbCurrValue // 当前值
  402. )
  403. {
  404. INT iRetCode = 0;
  405. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  406. static int iMaxID = 1;
  407. //CHAR chMaxID[MAX_ID] = {0};
  408. //GetMaxID("t_data_rec", "id", chMaxID);
  409. //if( 0 == atoi(chMaxID) )
  410. //{
  411. // iMaxID = 1;
  412. //}
  413. //else
  414. //{
  415. // iMaxID = atoi(chMaxID) + 1;
  416. //}
  417. if (g_pADODatabase != NULL && g_pADODatabase->IsOpen())
  418. {
  419. sprintf(strSQLText, "insert into t_data_rec(id,devname, happentime,varname,vardesc,datavalue) values(" \
  420. "%d, \'%s\', \'%s\', \'%s\', \'%s\', %.1f)",
  421. iMaxID, pDevName, pHappenTime,pVarName, pVarDesc, dbCurrValue );
  422. iRetCode = g_pADODatabase->Execute(strSQLText);
  423. iMaxID++;
  424. }
  425. return iRetCode;
  426. }
  427. INT InsertDvrInfo(
  428. CHAR* ip, // 设备名称
  429. int port, //
  430. CHAR* username, // 发生时间
  431. CHAR* pwd, // 变量名称
  432. int channelnum,
  433. int serveripvalue1,
  434. int serveripvalue2,
  435. CHAR* servermultiip,
  436. int nServermultiIP1,
  437. int nServermultiIP2,
  438. CHAR *servername, // 变量描述
  439. int devsoftversion
  440. )
  441. {
  442. INT iRetCode = 0;
  443. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  444. int iMaxID = 0;
  445. CHAR chMaxID[MAX_ID] = {0};
  446. GetMaxID("t_video_dvrinfo", "id", chMaxID);
  447. if( 0 == atoi(chMaxID) )
  448. {
  449. iMaxID = 1;
  450. }
  451. else
  452. {
  453. iMaxID = atoi(chMaxID) + 1;
  454. }
  455. if (g_pADODatabase != NULL && g_pADODatabase->IsOpen())
  456. {
  457. sprintf(strSQLText, "insert into t_video_dvrinfo( id,ip, port,username,pwd,channelnum,serveripvalue1,serveripvalue2,servermultiip,servermultiipvalue1,servermultiipvalue2,servername,devsoftversion ) values(" \
  458. "%d, \'%s\',%d, \'%s\', \'%s\', %d,%d,%d, \'%s\', %d, %d,\'%s\', %d )",
  459. iMaxID, ip, port,username, pwd, channelnum,serveripvalue1,serveripvalue2,servermultiip,nServermultiIP1,nServermultiIP2,servername,devsoftversion );
  460. iRetCode = g_pADODatabase->Execute(strSQLText);
  461. }
  462. return iRetCode;
  463. }
  464. //插入通道记录
  465. INT InsertChannelInfo(
  466. CHAR* ip, // 设备名称
  467. CHAR* channame,
  468. int bused,
  469. int dwaddress,
  470. int dwalarmlevel,
  471. int ichannel,
  472. int wjmqtype,
  473. int dwprotocol,
  474. int isequence
  475. )
  476. {
  477. INT iRetCode = 0;
  478. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  479. int iMaxID = 0;
  480. CHAR chMaxID[MAX_ID] = {0};
  481. GetMaxID("t_video_channelinfo", "id", chMaxID);
  482. if( 0 == atoi(chMaxID) )
  483. {
  484. iMaxID = 1;
  485. }
  486. else
  487. {
  488. iMaxID = atoi(chMaxID) + 1;
  489. }
  490. if (g_pADODatabase != NULL && g_pADODatabase->IsOpen())
  491. {
  492. sprintf(strSQLText, "insert into t_video_channelinfo( id,ip, channame,bused,dwaddress,dwalarmlevel,ichannel,wjmqtype,dwprotocol,isequence ) values(" \
  493. "%d, \'%s\',\'%s\',%d, %d,%d,%d,%d,%d,%d)",
  494. iMaxID, ip, channame,bused,dwaddress,dwalarmlevel,ichannel,wjmqtype,dwprotocol,isequence );
  495. iRetCode = g_pADODatabase->Execute(strSQLText);
  496. }
  497. return iRetCode;
  498. }
  499. //插入本地配置
  500. INT InsertLocalSetting(
  501. CHAR* sdownloadpath,
  502. CHAR* spicturesavepath,
  503. CHAR* slogsavepath,
  504. int videomaxtime,
  505. int nomotiontime,
  506. int istartrecorddriver,
  507. int iendrecorddriver
  508. )
  509. {
  510. INT iRetCode = 0;
  511. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  512. int iMaxID = 0;
  513. CHAR chMaxID[MAX_ID] = {0};
  514. GetMaxID("t_video_localsetting", "id", chMaxID);
  515. if( 0 == atoi(chMaxID) )
  516. {
  517. iMaxID = 1;
  518. }
  519. else
  520. {
  521. iMaxID = atoi(chMaxID) + 1;
  522. }
  523. if (g_pADODatabase != NULL && g_pADODatabase->IsOpen())
  524. {
  525. sprintf(strSQLText, "insert into t_video_localsetting( id,sdownloadpath, spicturesavepath,slogsavepath,videomaxtime,nomotiontime,istartrecorddriver,iendrecorddriver ) values(" \
  526. "%d, \'%s\',\'%s\',\'%s\',%d, %d,%d,%d )",
  527. iMaxID, sdownloadpath, spicturesavepath,slogsavepath,videomaxtime,nomotiontime,istartrecorddriver,iendrecorddriver );
  528. iRetCode = g_pADODatabase->Execute(strSQLText);
  529. }
  530. return iRetCode;
  531. }
  532. //更新Bit位表
  533. INT UpdateVarItemInfo(int nID, CHAR *pUid, int nStartBit, int nEndBit)
  534. {
  535. CHAR strMsg[MAX_MSG_LENGTH + 1] = "";
  536. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  537. INT iRetCode = 0;
  538. try
  539. {
  540. if (g_pADODatabase != NULL && g_pADODatabase->IsOpen())
  541. {
  542. sprintf(strSQLText, "update t_dev_variant_item set startbit = %d, endbit = %d where id = %d and uid = \'%s\'",
  543. nStartBit, nEndBit, nID, pUid);
  544. iRetCode = g_pADODatabase->Execute(strSQLText);
  545. }
  546. }
  547. catch (_com_error &e)
  548. {
  549. //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage());
  550. //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg));
  551. return 0;
  552. }
  553. return iRetCode;
  554. }
  555. //插入变量状态描述
  556. INT InsertVarStatusInfo(int nID, CHAR *pUid, int nVarID, int nStatusID, CHAR *pStatusDesc)
  557. {
  558. CHAR strMsg[MAX_MSG_LENGTH + 1] = "";
  559. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  560. INT iRetCode = 0;
  561. try
  562. {
  563. if (g_pADODatabase != NULL && g_pADODatabase->IsOpen())
  564. {
  565. sprintf(strSQLText, "insert into t_var_status(id, devuid, varid, statusid, statusdesc, normalstatus) values(" \
  566. "%d, \'%s\', %d, %d, \'%s\', %d)",
  567. nID, pUid, nVarID, nStatusID, pStatusDesc, 0);
  568. iRetCode = g_pADODatabase->Execute(strSQLText);
  569. }
  570. }
  571. catch (_com_error &e)
  572. {
  573. //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage());
  574. //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg));
  575. return 0;
  576. }
  577. return iRetCode;
  578. }
  579. //删除变量状态描述
  580. INT DeleteVarStatusInfo(CHAR *pUid, int nVarID)
  581. {
  582. CHAR strMsg[MAX_MSG_LENGTH + 1] = "";
  583. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  584. INT iRetCode = 0;
  585. try
  586. {
  587. if (g_pADODatabase != NULL && g_pADODatabase->IsOpen())
  588. {
  589. sprintf(strSQLText, "delete from t_var_status where devuid = \'%s\' and varid = %d ",
  590. pUid, nVarID);
  591. iRetCode = g_pADODatabase->Execute(strSQLText);
  592. }
  593. }
  594. catch (_com_error &e)
  595. {
  596. //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage());
  597. //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg));
  598. return 0;
  599. }
  600. return iRetCode;
  601. }
  602. //清空表
  603. INT CleanTable( CHAR *pTableName )
  604. {
  605. CHAR strMsg[MAX_MSG_LENGTH + 1] = "";
  606. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  607. INT iRetCode = 0;
  608. try
  609. {
  610. if (g_pADODatabase != NULL && g_pADODatabase->IsOpen())
  611. {
  612. sprintf(strSQLText, "delete from %s where id >0 ", pTableName);
  613. iRetCode = g_pADODatabase->Execute(strSQLText);
  614. }
  615. }
  616. catch (_com_error &e)
  617. {
  618. //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage());
  619. //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg));
  620. return 0;
  621. }
  622. return iRetCode;
  623. }
  624. //获取变量报警状态最大的ID
  625. INT GetVarStatusMaxID( CHAR *pMaxID )
  626. {
  627. CHAR strMsg[MAX_MSG_LENGTH + 1] = "";
  628. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  629. CString strID;
  630. CADORecordset* pRSet = NULL;
  631. INT iRetCode = 0;
  632. int nCount = 0;
  633. try
  634. {
  635. if (g_pADODatabase != NULL && g_pADODatabase->IsOpen())
  636. {
  637. pRSet = new CADORecordset(g_pADODatabase);
  638. if (NULL == pRSet)
  639. {
  640. return -1;
  641. }
  642. sprintf(strSQLText, "select max(id) as maxid from t_var_status");
  643. iRetCode = pRSet->Open(strSQLText, CADORecordset::openQuery);
  644. if (iRetCode == 0)
  645. {
  646. delete pRSet;
  647. pRSet = NULL;
  648. return -1;
  649. }
  650. nCount = pRSet->GetRecordCount();
  651. if (nCount == 0)
  652. {
  653. if( pRSet )
  654. {
  655. delete pRSet;
  656. pRSet = NULL;
  657. }
  658. return 0;
  659. }
  660. // 获取最大的设备ID
  661. if (!pRSet->IsFieldNull("maxid"))
  662. {
  663. pRSet->GetFieldValue("maxid", strID);
  664. strcpy(pMaxID, (char *)(LPCTSTR)strID);
  665. }
  666. if( pRSet )
  667. {
  668. delete pRSet;
  669. pRSet = NULL;
  670. }
  671. return nCount;
  672. }
  673. }
  674. catch (_com_error &e)
  675. {
  676. if( pRSet )
  677. {
  678. delete pRSet;
  679. pRSet = NULL;
  680. }
  681. //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage());
  682. //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg));
  683. return -1;
  684. }
  685. if( pRSet )
  686. {
  687. delete pRSet;
  688. pRSet = NULL;
  689. }
  690. return 0;
  691. }
  692. int GetFieldValueList1(char *pSql, list<string>& list1)
  693. {
  694. CHAR strMsg[MAX_MSG_LENGTH + 1] = "";
  695. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  696. CString strID;
  697. CADORecordset* pRSet = NULL;
  698. INT iRetCode = 0;
  699. int nCount = 0;
  700. _variant_t vtFieldValue;
  701. try
  702. {
  703. if (g_pADODatabase != NULL && g_pADODatabase->IsOpen())
  704. {
  705. pRSet = new CADORecordset(g_pADODatabase);
  706. if (NULL == pRSet)
  707. {
  708. return -1;
  709. }
  710. //sprintf(strSQLText, "select max(id) as maxid from t_var_status");
  711. iRetCode = pRSet->Open(pSql, CADORecordset::openQuery);
  712. if (iRetCode == 0)
  713. {
  714. delete pRSet;
  715. pRSet = NULL;
  716. return -1;
  717. }
  718. nCount = pRSet->GetRecordCount();
  719. if (nCount == 0)
  720. {
  721. if( pRSet )
  722. {
  723. delete pRSet;
  724. pRSet = NULL;
  725. }
  726. return 0;
  727. }
  728. for( int i = 0; i < nCount; i++ )
  729. {
  730. if( pRSet->GetFieldCount() >= 1 )
  731. {
  732. if( !pRSet->IsFieldNull(0) )
  733. {
  734. pRSet->GetFieldValue(0, vtFieldValue);
  735. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  736. list1.insert(list1.end(), strFieldValue);
  737. }
  738. else
  739. {
  740. list1.insert(list1.end(), "");
  741. }// end if( !pRSet->IsFieldNull(0) )
  742. }// end if( pRSet->GetFieldCount() >= 2 )
  743. pRSet->MoveNext();
  744. }// end for( int i = 0; i < nRecordCount; i++ )
  745. if( pRSet )
  746. {
  747. delete pRSet;
  748. pRSet = NULL;
  749. }
  750. return nCount;
  751. }
  752. }
  753. catch (_com_error &e)
  754. {
  755. if( pRSet )
  756. {
  757. delete pRSet;
  758. pRSet = NULL;
  759. }
  760. //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage());
  761. //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg));
  762. return -1;
  763. }
  764. if( pRSet )
  765. {
  766. delete pRSet;
  767. pRSet = NULL;
  768. }
  769. return 0;
  770. }
  771. int GetFieldValueList2(char *pSql, list<string>& list1, list<string>& list2)
  772. {
  773. CHAR strMsg[MAX_MSG_LENGTH + 1] = "";
  774. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  775. CString strID;
  776. CADORecordset* pRSet = NULL;
  777. INT iRetCode = 0;
  778. int nCount = 0;
  779. _variant_t vtFieldValue;
  780. try
  781. {
  782. if (g_pADODatabase != NULL && g_pADODatabase->IsOpen())
  783. {
  784. pRSet = new CADORecordset(g_pADODatabase);
  785. if (NULL == pRSet)
  786. {
  787. return -1;
  788. }
  789. //sprintf(strSQLText, "select max(id) as maxid from t_var_status");
  790. iRetCode = pRSet->Open(pSql, CADORecordset::openQuery);
  791. if (iRetCode == 0)
  792. {
  793. delete pRSet;
  794. pRSet = NULL;
  795. return -1;
  796. }
  797. nCount = pRSet->GetRecordCount();
  798. if (nCount == 0)
  799. {
  800. if( pRSet )
  801. {
  802. delete pRSet;
  803. pRSet = NULL;
  804. }
  805. return 0;
  806. }
  807. for( int i = 0; i < nCount; i++ )
  808. {
  809. if( pRSet->GetFieldCount() >= 2 )
  810. {
  811. if( !pRSet->IsFieldNull(0) )
  812. {
  813. pRSet->GetFieldValue(0, vtFieldValue);
  814. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  815. list1.insert(list1.end(), strFieldValue);
  816. }
  817. else
  818. {
  819. list1.insert(list1.end(), "");
  820. }// end if( !pRSet->IsFieldNull(0) )
  821. if( !pRSet->IsFieldNull(1) )
  822. {
  823. pRSet->GetFieldValue(1, vtFieldValue);
  824. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  825. list2.insert(list2.end(), strFieldValue);
  826. }
  827. else
  828. {
  829. list2.insert(list2.end(), "");
  830. }// end if( !pRSet->IsFieldNull(1) )
  831. }// end if( pRSet->GetFieldCount() >= 2 )
  832. pRSet->MoveNext();
  833. }// end for( int i = 0; i < nRecordCount; i++ )
  834. if( pRSet )
  835. {
  836. delete pRSet;
  837. pRSet = NULL;
  838. }
  839. return nCount;
  840. }
  841. }
  842. catch (_com_error &e)
  843. {
  844. if( pRSet )
  845. {
  846. delete pRSet;
  847. pRSet = NULL;
  848. }
  849. //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage());
  850. //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg));
  851. return -1;
  852. }
  853. if( pRSet )
  854. {
  855. delete pRSet;
  856. pRSet = NULL;
  857. }
  858. return 0;
  859. }
  860. int GetFieldValueList3(char *pSql, list<string>& list1, list<string>& list2, list<string>& list3)
  861. {
  862. CHAR strMsg[MAX_MSG_LENGTH + 1] = "";
  863. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  864. CString strID;
  865. CADORecordset* pRSet = NULL;
  866. INT iRetCode = 0;
  867. int nCount = 0;
  868. _variant_t vtFieldValue;
  869. try
  870. {
  871. if (g_pADODatabase != NULL && g_pADODatabase->IsOpen())
  872. {
  873. pRSet = new CADORecordset(g_pADODatabase);
  874. if (NULL == pRSet)
  875. {
  876. return -1;
  877. }
  878. //sprintf(strSQLText, "select max(id) as maxid from t_var_status");
  879. iRetCode = pRSet->Open(pSql, CADORecordset::openQuery);
  880. if (iRetCode == 0)
  881. {
  882. delete pRSet;
  883. pRSet = NULL;
  884. return -1;
  885. }
  886. nCount = pRSet->GetRecordCount();
  887. if (nCount == 0)
  888. {
  889. if( pRSet )
  890. {
  891. delete pRSet;
  892. pRSet = NULL;
  893. }
  894. return 0;
  895. }
  896. for( int i = 0; i < nCount; i++ )
  897. {
  898. if( pRSet->GetFieldCount() >= 2 )
  899. {
  900. if( !pRSet->IsFieldNull(0) )
  901. {
  902. pRSet->GetFieldValue(0, vtFieldValue);
  903. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  904. list1.insert(list1.end(), strFieldValue);
  905. }
  906. else
  907. {
  908. list1.insert(list1.end(), "");
  909. }// end if( !pRSet->IsFieldNull(0) )
  910. if( !pRSet->IsFieldNull(1) )
  911. {
  912. pRSet->GetFieldValue(1, vtFieldValue);
  913. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  914. list2.insert(list2.end(), strFieldValue);
  915. }
  916. else
  917. {
  918. list2.insert(list2.end(), "");
  919. }// end if( !pRSet->IsFieldNull(1) )
  920. if( !pRSet->IsFieldNull(2) )
  921. {
  922. pRSet->GetFieldValue(2, vtFieldValue);
  923. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  924. list3.insert(list3.end(), strFieldValue);
  925. }
  926. else
  927. {
  928. list3.insert(list3.end(), "");
  929. }// end if( !pRSet->IsFieldNull(1) )
  930. }// end if( pRSet->GetFieldCount() >= 2 )
  931. pRSet->MoveNext();
  932. }// end for( int i = 0; i < nRecordCount; i++ )
  933. if( pRSet )
  934. {
  935. delete pRSet;
  936. pRSet = NULL;
  937. }
  938. return nCount;
  939. }
  940. }
  941. catch (_com_error &e)
  942. {
  943. if( pRSet )
  944. {
  945. delete pRSet;
  946. pRSet = NULL;
  947. }
  948. //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage());
  949. //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg));
  950. return -1;
  951. }
  952. if( pRSet )
  953. {
  954. delete pRSet;
  955. pRSet = NULL;
  956. }
  957. return 0;
  958. }
  959. int GetFieldValueList6(char *pSql,list<string>& list1,list<string>& list2,list<string>& list3,list<string>& list4,list<string>& list5,list<string>& list6)
  960. {
  961. CHAR strMsg[MAX_MSG_LENGTH + 1] = "";
  962. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  963. CString strID;
  964. CADORecordset* pRSet = NULL;
  965. INT iRetCode = 0;
  966. int nCount = 0;
  967. _variant_t vtFieldValue;
  968. try
  969. {
  970. if (g_pADODatabase != NULL && g_pADODatabase->IsOpen())
  971. {
  972. pRSet = new CADORecordset(g_pADODatabase);
  973. if (NULL == pRSet)
  974. {
  975. return -1;
  976. }
  977. //sprintf(strSQLText, "select max(id) as maxid from t_var_status");
  978. iRetCode = pRSet->Open(pSql, CADORecordset::openQuery);
  979. if (iRetCode == 0)
  980. {
  981. delete pRSet;
  982. pRSet = NULL;
  983. return -1;
  984. }
  985. nCount = pRSet->GetRecordCount();
  986. if (nCount == 0)
  987. {
  988. if( pRSet )
  989. {
  990. delete pRSet;
  991. pRSet = NULL;
  992. }
  993. return 0;
  994. }
  995. for( int i = 0; i < nCount; i++ )
  996. {
  997. if( pRSet->GetFieldCount() >= 5 )
  998. {
  999. if( !pRSet->IsFieldNull(0) )
  1000. {
  1001. pRSet->GetFieldValue(0, vtFieldValue);
  1002. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1003. list1.insert(list1.end(), strFieldValue);
  1004. }
  1005. else
  1006. {
  1007. list1.insert(list1.end(), "");
  1008. }
  1009. if( !pRSet->IsFieldNull(1) )
  1010. {
  1011. pRSet->GetFieldValue(1, vtFieldValue);
  1012. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1013. list2.insert(list2.end(), strFieldValue);
  1014. }
  1015. else
  1016. {
  1017. list2.insert(list2.end(), "");
  1018. }
  1019. if( !pRSet->IsFieldNull(2) )
  1020. {
  1021. pRSet->GetFieldValue(2, vtFieldValue);
  1022. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1023. list3.insert(list3.end(), strFieldValue);
  1024. }
  1025. else
  1026. {
  1027. list3.insert(list3.end(), "");
  1028. }
  1029. if( !pRSet->IsFieldNull(3) )
  1030. {
  1031. pRSet->GetFieldValue(3, vtFieldValue);
  1032. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1033. list4.insert(list4.end(), strFieldValue);
  1034. }
  1035. else
  1036. {
  1037. list4.insert(list4.end(), "");
  1038. }
  1039. if( !pRSet->IsFieldNull(4) )
  1040. {
  1041. pRSet->GetFieldValue(4, vtFieldValue);
  1042. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1043. list5.insert(list5.end(), strFieldValue);
  1044. }
  1045. else
  1046. {
  1047. list5.insert(list5.end(), "");
  1048. }
  1049. if( !pRSet->IsFieldNull(5) )
  1050. {
  1051. pRSet->GetFieldValue(5, vtFieldValue);
  1052. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1053. list6.insert(list6.end(), strFieldValue);
  1054. }
  1055. else
  1056. {
  1057. list6.insert(list6.end(), "");
  1058. }
  1059. }
  1060. pRSet->MoveNext();
  1061. }// end for( int i = 0; i < nRecordCount; i++ )
  1062. if( pRSet )
  1063. {
  1064. delete pRSet;
  1065. pRSet = NULL;
  1066. }
  1067. return nCount;
  1068. }
  1069. }
  1070. catch (_com_error &e)
  1071. {
  1072. if( pRSet )
  1073. {
  1074. delete pRSet;
  1075. pRSet = NULL;
  1076. }
  1077. //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage());
  1078. //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg));
  1079. return -1;
  1080. }
  1081. if( pRSet )
  1082. {
  1083. delete pRSet;
  1084. pRSet = NULL;
  1085. }
  1086. return 0;
  1087. }
  1088. int GetFieldValueList9(char *pSql,list<string>& list1,list<string>& list2,list<string>& list3,list<string>& list4,list<string>& list5,list<string>& list6,list<string>& list7,list<string>& list8,list<string>& list9)
  1089. {
  1090. CHAR strMsg[MAX_MSG_LENGTH + 1] = "";
  1091. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  1092. CString strID;
  1093. CADORecordset* pRSet = NULL;
  1094. INT iRetCode = 0;
  1095. int nCount = 0;
  1096. _variant_t vtFieldValue;
  1097. try
  1098. {
  1099. if (g_pADODatabase != NULL && g_pADODatabase->IsOpen())
  1100. {
  1101. pRSet = new CADORecordset(g_pADODatabase);
  1102. if (NULL == pRSet)
  1103. {
  1104. return -1;
  1105. }
  1106. //sprintf(strSQLText, "select max(id) as maxid from t_var_status");
  1107. iRetCode = pRSet->Open(pSql, CADORecordset::openQuery);
  1108. if (iRetCode == 0)
  1109. {
  1110. delete pRSet;
  1111. pRSet = NULL;
  1112. return -1;
  1113. }
  1114. nCount = pRSet->GetRecordCount();
  1115. if (nCount == 0)
  1116. {
  1117. if( pRSet )
  1118. {
  1119. delete pRSet;
  1120. pRSet = NULL;
  1121. }
  1122. return 0;
  1123. }
  1124. for( int i = 0; i < nCount; i++ )
  1125. {
  1126. if( pRSet->GetFieldCount() >= 5 )
  1127. {
  1128. if( !pRSet->IsFieldNull(0) )
  1129. {
  1130. pRSet->GetFieldValue(0, vtFieldValue);
  1131. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1132. list1.insert(list1.end(), strFieldValue);
  1133. }
  1134. else
  1135. {
  1136. list1.insert(list1.end(), "");
  1137. }
  1138. if( !pRSet->IsFieldNull(1) )
  1139. {
  1140. pRSet->GetFieldValue(1, vtFieldValue);
  1141. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1142. list2.insert(list2.end(), strFieldValue);
  1143. }
  1144. else
  1145. {
  1146. list2.insert(list2.end(), "");
  1147. }
  1148. if( !pRSet->IsFieldNull(2) )
  1149. {
  1150. pRSet->GetFieldValue(2, vtFieldValue);
  1151. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1152. list3.insert(list3.end(), strFieldValue);
  1153. }
  1154. else
  1155. {
  1156. list3.insert(list3.end(), "");
  1157. }
  1158. if( !pRSet->IsFieldNull(3) )
  1159. {
  1160. pRSet->GetFieldValue(3, vtFieldValue);
  1161. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1162. list4.insert(list4.end(), strFieldValue);
  1163. }
  1164. else
  1165. {
  1166. list4.insert(list4.end(), "");
  1167. }
  1168. if( !pRSet->IsFieldNull(4) )
  1169. {
  1170. pRSet->GetFieldValue(4, vtFieldValue);
  1171. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1172. list5.insert(list5.end(), strFieldValue);
  1173. }
  1174. else
  1175. {
  1176. list5.insert(list5.end(), "");
  1177. }
  1178. if( !pRSet->IsFieldNull(5) )
  1179. {
  1180. pRSet->GetFieldValue(5, vtFieldValue);
  1181. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1182. list6.insert(list6.end(), strFieldValue);
  1183. }
  1184. else
  1185. {
  1186. list6.insert(list6.end(), "");
  1187. }
  1188. if( !pRSet->IsFieldNull(6) )
  1189. {
  1190. pRSet->GetFieldValue(6, vtFieldValue);
  1191. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1192. list7.insert(list7.end(), strFieldValue);
  1193. }
  1194. else
  1195. {
  1196. list7.insert(list7.end(), "");
  1197. }
  1198. if( !pRSet->IsFieldNull(7) )
  1199. {
  1200. pRSet->GetFieldValue(7, vtFieldValue);
  1201. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1202. list8.insert(list8.end(), strFieldValue);
  1203. }
  1204. else
  1205. {
  1206. list8.insert(list8.end(), "");
  1207. }
  1208. if( !pRSet->IsFieldNull(8) )
  1209. {
  1210. pRSet->GetFieldValue(8, vtFieldValue);
  1211. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1212. list9.insert(list9.end(), strFieldValue);
  1213. }
  1214. else
  1215. {
  1216. list9.insert(list9.end(), "");
  1217. }
  1218. }
  1219. pRSet->MoveNext();
  1220. }// end for( int i = 0; i < nRecordCount; i++ )
  1221. if( pRSet )
  1222. {
  1223. delete pRSet;
  1224. pRSet = NULL;
  1225. }
  1226. return nCount;
  1227. }
  1228. }
  1229. catch (_com_error &e)
  1230. {
  1231. if( pRSet )
  1232. {
  1233. delete pRSet;
  1234. pRSet = NULL;
  1235. }
  1236. //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage());
  1237. //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg));
  1238. return -1;
  1239. }
  1240. if( pRSet )
  1241. {
  1242. delete pRSet;
  1243. pRSet = NULL;
  1244. }
  1245. return 0;
  1246. }
  1247. int GetFieldValueList13(char *pSql,list<string>& list1,list<string>& list2,list<string>& list3,list<string>& list4,list<string>& list5,list<string>& list6,
  1248. list<string>& list7,list<string>& list8,list<string>& list9,list<string>& list10,list<string>& list11,list<string>& list12,list<string>& list13)
  1249. {
  1250. CHAR strMsg[MAX_MSG_LENGTH + 1] = "";
  1251. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  1252. CString strID;
  1253. CADORecordset* pRSet = NULL;
  1254. INT iRetCode = 0;
  1255. int nCount = 0;
  1256. _variant_t vtFieldValue;
  1257. try
  1258. {
  1259. if (g_pADODatabase != NULL && g_pADODatabase->IsOpen())
  1260. {
  1261. pRSet = new CADORecordset(g_pADODatabase);
  1262. if (NULL == pRSet)
  1263. {
  1264. return -1;
  1265. }
  1266. //sprintf(strSQLText, "select max(id) as maxid from t_var_status");
  1267. iRetCode = pRSet->Open(pSql, CADORecordset::openQuery);
  1268. if (iRetCode == 0)
  1269. {
  1270. delete pRSet;
  1271. pRSet = NULL;
  1272. return -1;
  1273. }
  1274. nCount = pRSet->GetRecordCount();
  1275. if (nCount == 0)
  1276. {
  1277. if( pRSet )
  1278. {
  1279. delete pRSet;
  1280. pRSet = NULL;
  1281. }
  1282. return 0;
  1283. }
  1284. for( int i = 0; i < nCount; i++ )
  1285. {
  1286. if( pRSet->GetFieldCount() >= 13 )
  1287. {
  1288. if( !pRSet->IsFieldNull(0) )
  1289. {
  1290. pRSet->GetFieldValue(0, vtFieldValue);
  1291. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1292. list1.insert(list1.end(), strFieldValue);
  1293. }
  1294. else
  1295. {
  1296. list1.insert(list1.end(), "");
  1297. }
  1298. if( !pRSet->IsFieldNull(1) )
  1299. {
  1300. pRSet->GetFieldValue(1, vtFieldValue);
  1301. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1302. list2.insert(list2.end(), strFieldValue);
  1303. }
  1304. else
  1305. {
  1306. list2.insert(list2.end(), "");
  1307. }
  1308. if( !pRSet->IsFieldNull(2) )
  1309. {
  1310. pRSet->GetFieldValue(2, vtFieldValue);
  1311. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1312. list3.insert(list3.end(), strFieldValue);
  1313. }
  1314. else
  1315. {
  1316. list3.insert(list3.end(), "");
  1317. }
  1318. if( !pRSet->IsFieldNull(3) )
  1319. {
  1320. pRSet->GetFieldValue(3, vtFieldValue);
  1321. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1322. list4.insert(list4.end(), strFieldValue);
  1323. }
  1324. else
  1325. {
  1326. list4.insert(list4.end(), "");
  1327. }
  1328. if( !pRSet->IsFieldNull(4) )
  1329. {
  1330. pRSet->GetFieldValue(4, vtFieldValue);
  1331. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1332. list5.insert(list5.end(), strFieldValue);
  1333. }
  1334. else
  1335. {
  1336. list5.insert(list5.end(), "");
  1337. }
  1338. if( !pRSet->IsFieldNull(5) )
  1339. {
  1340. pRSet->GetFieldValue(5, vtFieldValue);
  1341. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1342. list6.insert(list6.end(), strFieldValue);
  1343. }
  1344. else
  1345. {
  1346. list6.insert(list6.end(), "");
  1347. }
  1348. if( !pRSet->IsFieldNull(6) )
  1349. {
  1350. pRSet->GetFieldValue(6, vtFieldValue);
  1351. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1352. list7.insert(list7.end(), strFieldValue);
  1353. }
  1354. else
  1355. {
  1356. list7.insert(list7.end(), "");
  1357. }
  1358. if( !pRSet->IsFieldNull(7) )
  1359. {
  1360. pRSet->GetFieldValue(7, vtFieldValue);
  1361. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1362. list8.insert(list8.end(), strFieldValue);
  1363. }
  1364. else
  1365. {
  1366. list8.insert(list8.end(), "");
  1367. }
  1368. if( !pRSet->IsFieldNull(8) )
  1369. {
  1370. pRSet->GetFieldValue(8, vtFieldValue);
  1371. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1372. list9.insert(list9.end(), strFieldValue);
  1373. }
  1374. else
  1375. {
  1376. list9.insert(list9.end(), "");
  1377. }
  1378. if( !pRSet->IsFieldNull(9) )
  1379. {
  1380. pRSet->GetFieldValue(9, vtFieldValue);
  1381. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1382. list10.insert(list10.end(), strFieldValue);
  1383. }
  1384. else
  1385. {
  1386. list10.insert(list10.end(), "");
  1387. }
  1388. if( !pRSet->IsFieldNull(10) )
  1389. {
  1390. pRSet->GetFieldValue(10, vtFieldValue);
  1391. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1392. list11.insert(list11.end(), strFieldValue);
  1393. }
  1394. else
  1395. {
  1396. list11.insert(list11.end(), "");
  1397. }
  1398. if( !pRSet->IsFieldNull(11) )
  1399. {
  1400. pRSet->GetFieldValue(11, vtFieldValue);
  1401. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1402. list12.insert(list12.end(), strFieldValue);
  1403. }
  1404. else
  1405. {
  1406. list12.insert(list12.end(), "");
  1407. }
  1408. if( !pRSet->IsFieldNull(12) )
  1409. {
  1410. pRSet->GetFieldValue(12, vtFieldValue);
  1411. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  1412. list13.insert(list13.end(), strFieldValue);
  1413. }
  1414. else
  1415. {
  1416. list13.insert(list13.end(), "");
  1417. }
  1418. }
  1419. pRSet->MoveNext();
  1420. }// end for( int i = 0; i < nRecordCount; i++ )
  1421. if( pRSet )
  1422. {
  1423. delete pRSet;
  1424. pRSet = NULL;
  1425. }
  1426. return nCount;
  1427. }
  1428. }
  1429. catch (_com_error &e)
  1430. {
  1431. if( pRSet )
  1432. {
  1433. delete pRSet;
  1434. pRSet = NULL;
  1435. }
  1436. //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage());
  1437. //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg));
  1438. return -1;
  1439. }
  1440. if( pRSet )
  1441. {
  1442. delete pRSet;
  1443. pRSet = NULL;
  1444. }
  1445. return 0;
  1446. }
  1447. //更新变量是否要SNMP发送
  1448. INT UpdateVarSnmpStatus( int nID, bool bStatus )
  1449. {
  1450. CHAR strMsg[MAX_MSG_LENGTH + 1] = "";
  1451. CHAR strSQLText[MAX_SQL_LENGTH + 1] = "";
  1452. INT iRetCode = 0;
  1453. try
  1454. {
  1455. if (g_pADODatabase != NULL && g_pADODatabase->IsOpen())
  1456. {
  1457. sprintf(strSQLText, "update t_dev_variant set boolreserved4 = \'%d\' where id = %d ",bStatus, nID);
  1458. iRetCode = g_pADODatabase->Execute(strSQLText);
  1459. }
  1460. }
  1461. catch (_com_error &e)
  1462. {
  1463. //sprintf(strMsg, g_strErrorExecSql, strSQLText, e.ErrorMessage());
  1464. //AddToPrintQueue(MSG_ERROR, MSG_DB_MD, strMsg, strlen(strMsg));
  1465. return 0;
  1466. }
  1467. return iRetCode;
  1468. }