AdoImpl.cpp 25 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087
  1. #include "StdAfx.h"
  2. #include "AdoImpl.h"
  3. AdoImpl::AdoImpl(void)
  4. {
  5. m_pADODatabase = NULL;
  6. memset(m_szConnectString,0,1024);
  7. InitializeCriticalSection(&m_csAdo);
  8. }
  9. AdoImpl::~AdoImpl(void)
  10. {
  11. DeleteCriticalSection(&m_csAdo);
  12. }
  13. void AdoImpl::SetConnectString(IN const int &nType,IN const STAdoDatabaseInfo &tagAodDatabaseInfo)
  14. {
  15. switch (nType)
  16. {
  17. case ADO_ACCESS97:
  18. sprintf(m_szConnectString, "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=%s", tagAodDatabaseInfo.szDatabaseFile);
  19. break;
  20. case ADO_ACCESS2000:
  21. sprintf(m_szConnectString, "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s", tagAodDatabaseInfo.szDatabaseFile);
  22. break;
  23. case ADO_ACCESS2007:
  24. sprintf(m_szConnectString, "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s", tagAodDatabaseInfo.szDatabaseFile);
  25. break;
  26. case ADO_SQLSERVER:
  27. {
  28. if ( !_stricmp(tagAodDatabaseInfo.szDatabaseTCPPort,"0"))
  29. {
  30. //sprintf(m_szConnectString, "Provider=sqloledb.1;Persist Security Info=false;Data Source=%s;Initial Catalog=%s;User Id=%s;Password=%s; ",
  31. sprintf(m_szConnectString, "Provider=sqloledb;Data Source=%s;Initial Catalog=%s;User Id=%s;Password=%s; ",
  32. tagAodDatabaseInfo.szDataSource, // IP華硊麼督昢靡備;
  33. tagAodDatabaseInfo.szDatabaseName,
  34. tagAodDatabaseInfo.szDatabaseAccount,
  35. tagAodDatabaseInfo.szDatabasePassword);
  36. }
  37. else
  38. {
  39. //sprintf(m_szConnectString, "Provider=sqloledb.1;Persist Security Info=false;Data Source=%s,%s;Initial Catalog=%s;User Id=%s;Password=%s; ",
  40. sprintf(m_szConnectString, "Provider=sqloledb;Data Source=%s,%s;Initial Catalog=%s;User Id=%s;Password=%s; ",
  41. tagAodDatabaseInfo.szDataSource, // IP華硊麼督昢靡備;
  42. tagAodDatabaseInfo.szDatabaseTCPPort,
  43. tagAodDatabaseInfo.szDatabaseName,
  44. tagAodDatabaseInfo.szDatabaseAccount,
  45. tagAodDatabaseInfo.szDatabasePassword);
  46. }
  47. }
  48. break;
  49. case ADO_PGSQL:
  50. {
  51. sprintf(m_szConnectString, "DRIVER={PostgreSQL ODBC Driver(UNICODE)}; SERVER=%s; port=%s; DATABASE=%s; UID=%s; PWD=%s;",
  52. tagAodDatabaseInfo.szDataSource, // IP華硊麼督昢靡備;
  53. tagAodDatabaseInfo.szDatabaseTCPPort,
  54. tagAodDatabaseInfo.szDatabaseName,
  55. tagAodDatabaseInfo.szDatabaseAccount,
  56. tagAodDatabaseInfo.szDatabasePassword);
  57. }
  58. break;
  59. default:
  60. break;
  61. }
  62. }
  63. bool AdoImpl::opendatabase(IN const TCHAR *pConnectString)
  64. {
  65. bool bResult = false;
  66. if( NULL == m_pADODatabase )
  67. {
  68. m_pADODatabase = new CADODatabase();
  69. if( m_pADODatabase )
  70. {
  71. if( pConnectString == NULL )
  72. {
  73. m_pADODatabase->SetConnectionString(m_szConnectString);
  74. }
  75. else
  76. {
  77. m_pADODatabase->SetConnectionString(pConnectString);
  78. strcpy(m_szConnectString, pConnectString);
  79. }
  80. if( TRUE == m_pADODatabase->Open() )
  81. {
  82. //LOG4C((LOG_NOTICE, "Database Connetion Success!"));
  83. bResult = true;
  84. }
  85. else
  86. {
  87. if( m_pADODatabase->IsOpen() )
  88. {
  89. m_pADODatabase->Close();
  90. }
  91. delete m_pADODatabase;
  92. m_pADODatabase = NULL;
  93. //LOG4C((LOG_NOTICE, "Database Connetion Lost!"));
  94. }
  95. }
  96. }
  97. return bResult;
  98. }
  99. void AdoImpl::closedatabase()
  100. {
  101. if( NULL != m_pADODatabase )
  102. {
  103. if( m_pADODatabase->IsOpen() )
  104. {
  105. m_pADODatabase->Close();
  106. }
  107. if( m_pADODatabase )
  108. delete m_pADODatabase;
  109. m_pADODatabase = NULL;
  110. }
  111. }
  112. int AdoImpl::Execute(TCHAR *pSQL)
  113. {
  114. INT iRetCode = 0;
  115. if( NULL == m_pADODatabase )
  116. {
  117. //LOG4C((LOG_NOTICE, "NULL == m_pADODatabase" ));
  118. return -1;
  119. }
  120. try
  121. {
  122. EnterCriticalSection(&m_csAdo);
  123. if ( m_pADODatabase->IsOpen() )
  124. {
  125. iRetCode = m_pADODatabase->Execute(pSQL);
  126. LeaveCriticalSection(&m_csAdo);
  127. }
  128. else
  129. {
  130. LeaveCriticalSection(&m_csAdo);
  131. //LOG4C((LOG_NOTICE, "m_pADODatabase->IsOpen() = false" ));
  132. return -1;
  133. }
  134. }
  135. catch (_com_error &e)
  136. {
  137. //LOG4C( ( LOG_ERROR, "Execute SQL Script Error, Script:%s, ErrorMsg:%s", pSql, e.ErrorMessage() ) );
  138. }// end catch (_com_error &e)
  139. return iRetCode;
  140. }
  141. void AdoImpl::DeleteADORecordSet(CADORecordset* pRSet)
  142. {
  143. CloseADORecordSet(pRSet);
  144. if( pRSet )
  145. {
  146. delete pRSet;
  147. pRSet = NULL;
  148. }
  149. }
  150. bool AdoImpl::OpenADORecordSet(CADORecordset* pRSet, const TCHAR *pSQL)
  151. {
  152. int iRetCode;
  153. bool bResult = true;
  154. if( NULL == pRSet ) return false;
  155. try
  156. {
  157. iRetCode = pRSet->Open(pSQL, CADORecordset::openQuery);
  158. if (iRetCode == 0)
  159. {
  160. DeleteADORecordSet(pRSet);
  161. bResult = false;
  162. }
  163. }
  164. catch (_com_error &e)
  165. {
  166. //LOG4C( ( LOG_ERROR, "Execute SQL Script Error, Script:%s, ErrorMsg:%s", pSql, e.ErrorMessage() ) );
  167. DeleteADORecordSet(pRSet);
  168. bResult = false;
  169. }// end catch (_com_error &e)
  170. return bResult;
  171. }
  172. void AdoImpl::CloseADORecordSet(CADORecordset* pRSet)
  173. {
  174. if( NULL != pRSet )
  175. {
  176. if( pRSet->IsOpen() )
  177. {
  178. pRSet->Close();
  179. }
  180. }
  181. }
  182. bool AdoImpl::GetADODateBaseStatus()
  183. {
  184. if( NULL == m_pADODatabase || !m_pADODatabase->IsOpen())
  185. return false;
  186. return true;
  187. }
  188. DWORD AdoImpl::GetTableRecordCount(IN const TCHAR *pTableName)
  189. {
  190. if ( pTableName == NULL)
  191. {
  192. return -1;
  193. }
  194. TCHAR szSQL[1024] = _T("");
  195. sprintf(szSQL,"select count(*) as cot from %s",pTableName);
  196. DWORD nRecordCount = 0;
  197. _variant_t vtFieldValue;
  198. bool bResult = false;
  199. EnterCriticalSection( &m_csAdo );
  200. bResult = GetADODateBaseStatus();
  201. if( false == bResult )
  202. {
  203. LeaveCriticalSection( &m_csAdo );
  204. return -1;
  205. }
  206. CADORecordset* pRSet = new CADORecordset(m_pADODatabase);
  207. LeaveCriticalSection( &m_csAdo );
  208. if( NULL == pRSet )
  209. {
  210. //LOG4C((LOG_NOTICE, "GetFieldValueList1 pRSet == NULL"));
  211. return -1;
  212. }
  213. bResult = OpenADORecordSet(pRSet, szSQL);
  214. if( false == bResult )
  215. {
  216. //LOG4C((LOG_NOTICE, "GetFieldValueList1 OpenADORecordSet <%s>", pSql));
  217. DeleteADORecordSet(pRSet);
  218. return -1;
  219. }
  220. if( !pRSet->IsFieldNull("cot") )
  221. {
  222. pRSet->GetFieldValue("cot", nRecordCount);
  223. }
  224. else
  225. {
  226. nRecordCount = -1;
  227. }// end if( !pRSet->IsFieldNull(0) )
  228. DeleteADORecordSet(pRSet);
  229. return nRecordCount;
  230. }
  231. int AdoImpl::GetClientServiceViewData(__in const TCHAR *pSQL,__out CArray<CStringArray,CStringArray>& strArray,__in const TCHAR *pfilter)
  232. {
  233. int nFieldCount = 0;
  234. int nRecordCount = 0;
  235. _variant_t vtFieldValue;
  236. bool bResult = false;
  237. EnterCriticalSection( &m_csAdo );
  238. bResult = GetADODateBaseStatus();
  239. if( false == bResult )
  240. {
  241. LeaveCriticalSection( &m_csAdo );
  242. return -1;
  243. }
  244. CADORecordset* pRSet = new CADORecordset(m_pADODatabase);
  245. LeaveCriticalSection( &m_csAdo );
  246. if( NULL == pRSet )
  247. {
  248. return -1;
  249. }
  250. TCHAR szSQL[1024] = _T("");
  251. if(pfilter && (strcmp(pfilter,"") != 0))
  252. sprintf(szSQL,"%s where %s",pSQL,pfilter);
  253. else
  254. sprintf(szSQL,"%s",pSQL);
  255. bResult = OpenADORecordSet(pRSet, szSQL);
  256. if( false == bResult )
  257. {
  258. DeleteADORecordSet(pRSet);
  259. return -1;
  260. }
  261. nRecordCount = pRSet->GetRecordCount();
  262. nFieldCount = pRSet->GetFieldCount();
  263. strArray.SetSize(nRecordCount,1);
  264. for( int i = 0; i < nRecordCount; i++ )
  265. {
  266. if( !pRSet->IsFieldNull("dindanid") )
  267. {
  268. pRSet->GetFieldValue("dindanid", vtFieldValue);
  269. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  270. strArray.ElementAt(i).Add(strFieldValue.c_str());
  271. }
  272. else
  273. {
  274. strArray.ElementAt(i).Add("");
  275. }
  276. if( !pRSet->IsFieldNull("name1") )
  277. {
  278. pRSet->GetFieldValue("name1", vtFieldValue);
  279. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  280. strArray.ElementAt(i).Add(strFieldValue.c_str());
  281. }
  282. else
  283. {
  284. strArray.ElementAt(i).Add("");
  285. }
  286. if( !pRSet->IsFieldNull("name2") )
  287. {
  288. pRSet->GetFieldValue("name2", vtFieldValue);
  289. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  290. strArray.ElementAt(i).Add(strFieldValue.c_str());
  291. }
  292. else
  293. {
  294. strArray.ElementAt(i).Add("");
  295. }
  296. if( !pRSet->IsFieldNull("phone1") )
  297. {
  298. pRSet->GetFieldValue("phone1", vtFieldValue);
  299. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  300. strArray.ElementAt(i).Add(strFieldValue.c_str());
  301. }
  302. else
  303. {
  304. strArray.ElementAt(i).Add("");
  305. }
  306. if( !pRSet->IsFieldNull("addr1") )
  307. {
  308. pRSet->GetFieldValue("addr1", vtFieldValue);
  309. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  310. strArray.ElementAt(i).Add(strFieldValue.c_str());
  311. }
  312. else
  313. {
  314. strArray.ElementAt(i).Add("");
  315. }
  316. if( !pRSet->IsFieldNull("qq1") )
  317. {
  318. pRSet->GetFieldValue("qq1", vtFieldValue);
  319. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  320. strArray.ElementAt(i).Add(strFieldValue.c_str());
  321. }
  322. else
  323. {
  324. strArray.ElementAt(i).Add("");
  325. }
  326. if( !pRSet->IsFieldNull("txtype") )
  327. {
  328. pRSet->GetFieldValue("txtype", vtFieldValue);
  329. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  330. strArray.ElementAt(i).Add(strFieldValue.c_str());
  331. }
  332. else
  333. {
  334. strArray.ElementAt(i).Add("");
  335. }
  336. if( !pRSet->IsFieldNull("ren") )
  337. {
  338. pRSet->GetFieldValue("ren", vtFieldValue);
  339. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  340. strArray.ElementAt(i).Add(strFieldValue.c_str());
  341. }
  342. else
  343. {
  344. strArray.ElementAt(i).Add("");
  345. }
  346. if( !pRSet->IsFieldNull("checkcontent") )
  347. {
  348. pRSet->GetFieldValue("checkcontent", vtFieldValue);
  349. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  350. strArray.ElementAt(i).Add(strFieldValue.c_str());
  351. }
  352. else
  353. {
  354. strArray.ElementAt(i).Add("");
  355. }
  356. if( !pRSet->IsFieldNull("clerk") )
  357. {
  358. pRSet->GetFieldValue("clerk", vtFieldValue);
  359. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  360. strArray.ElementAt(i).Add(strFieldValue.c_str());
  361. }
  362. else
  363. {
  364. strArray.ElementAt(i).Add("");
  365. }
  366. if( !pRSet->IsFieldNull("useqq") )
  367. {
  368. pRSet->GetFieldValue("useqq", vtFieldValue);
  369. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  370. strArray.ElementAt(i).Add(strFieldValue.c_str());
  371. }
  372. else
  373. {
  374. strArray.ElementAt(i).Add("");
  375. }
  376. if( !pRSet->IsFieldNull("date") )
  377. {
  378. pRSet->GetFieldValue("date", vtFieldValue);
  379. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  380. strArray.ElementAt(i).Add(strFieldValue.c_str());
  381. }
  382. else
  383. {
  384. strArray.ElementAt(i).Add("");
  385. }
  386. if( !pRSet->IsFieldNull("question") )
  387. {
  388. pRSet->GetFieldValue("question", vtFieldValue);
  389. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  390. strArray.ElementAt(i).Add(strFieldValue.c_str());
  391. }
  392. else
  393. {
  394. strArray.ElementAt(i).Add("");
  395. }
  396. if( !pRSet->IsFieldNull("solution") )
  397. {
  398. pRSet->GetFieldValue("solution", vtFieldValue);
  399. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  400. strArray.ElementAt(i).Add(strFieldValue.c_str());
  401. }
  402. else
  403. {
  404. strArray.ElementAt(i).Add("");
  405. }
  406. if( !pRSet->IsFieldNull("result") )
  407. {
  408. pRSet->GetFieldValue("result", vtFieldValue);
  409. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  410. strArray.ElementAt(i).Add(strFieldValue.c_str());
  411. }
  412. else
  413. {
  414. strArray.ElementAt(i).Add("");
  415. }
  416. if( !pRSet->IsFieldNull("clientqq") )
  417. {
  418. pRSet->GetFieldValue("clientqq", vtFieldValue);
  419. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  420. strArray.ElementAt(i).Add(strFieldValue.c_str());
  421. }
  422. else
  423. {
  424. strArray.ElementAt(i).Add("");
  425. }
  426. if( !pRSet->IsFieldNull("contact") )
  427. {
  428. pRSet->GetFieldValue("contact", vtFieldValue);
  429. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  430. strArray.ElementAt(i).Add(strFieldValue.c_str());
  431. }
  432. else
  433. {
  434. strArray.ElementAt(i).Add("");
  435. }
  436. if( !pRSet->IsFieldNull("time") )
  437. {
  438. pRSet->GetFieldValue("time", vtFieldValue);
  439. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  440. strArray.ElementAt(i).Add(strFieldValue.c_str());
  441. }
  442. else
  443. {
  444. strArray.ElementAt(i).Add("");
  445. }
  446. if( !pRSet->IsFieldNull("from") )
  447. {
  448. pRSet->GetFieldValue("from", vtFieldValue);
  449. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  450. strArray.ElementAt(i).Add(strFieldValue.c_str());
  451. }
  452. else
  453. {
  454. strArray.ElementAt(i).Add("");
  455. }
  456. if( !pRSet->IsFieldNull("pinyin1") )
  457. {
  458. pRSet->GetFieldValue("pinyin1", vtFieldValue);
  459. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  460. strArray.ElementAt(i).Add(strFieldValue.c_str());
  461. }
  462. else
  463. {
  464. strArray.ElementAt(i).Add("");
  465. }
  466. if( !pRSet->IsFieldNull("pinyin2") )
  467. {
  468. pRSet->GetFieldValue("pinyin2", vtFieldValue);
  469. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  470. strArray.ElementAt(i).Add(strFieldValue.c_str());
  471. }
  472. else
  473. {
  474. strArray.ElementAt(i).Add("");
  475. }
  476. pRSet->MoveNext();
  477. }// end for( int i = 0; i < nRecordCount; i++ )
  478. DeleteADORecordSet(pRSet);
  479. return nRecordCount;
  480. }
  481. int AdoImpl::GetClientServiceViewDataEx(__in const TCHAR *pSQL,__out CArray<CStringArray,CStringArray>& strArray,__in const TCHAR *pfilter)
  482. {
  483. int nFieldCount = 0;
  484. int nRecordCount = 0;
  485. _variant_t vtFieldValue;
  486. bool bResult = false;
  487. EnterCriticalSection( &m_csAdo );
  488. bResult = GetADODateBaseStatus();
  489. if( false == bResult )
  490. {
  491. LeaveCriticalSection( &m_csAdo );
  492. return -1;
  493. }
  494. CADORecordset* pRSet = new CADORecordset(m_pADODatabase);
  495. LeaveCriticalSection( &m_csAdo );
  496. if( NULL == pRSet )
  497. {
  498. return -1;
  499. }
  500. TCHAR szSQL[1024] = _T("");
  501. if(pfilter && (strcmp(pfilter,"") != 0))
  502. sprintf(szSQL,"%s where %s",pSQL,pfilter);
  503. else
  504. sprintf(szSQL,"%s",pSQL);
  505. bResult = OpenADORecordSet(pRSet, szSQL);
  506. if( false == bResult )
  507. {
  508. DeleteADORecordSet(pRSet);
  509. return -1;
  510. }
  511. nRecordCount = pRSet->GetRecordCount();
  512. nFieldCount = pRSet->GetFieldCount();
  513. strArray.SetSize(nRecordCount,1);
  514. for( int i = 0; i < nRecordCount; i++ )
  515. {
  516. if( !pRSet->IsFieldNull("dindanid") )
  517. {
  518. pRSet->GetFieldValue("dindanid", vtFieldValue);
  519. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  520. strArray.ElementAt(i).Add(strFieldValue.c_str());
  521. }
  522. else
  523. {
  524. strArray.ElementAt(i).Add("");
  525. }
  526. if( !pRSet->IsFieldNull("name1") )
  527. {
  528. pRSet->GetFieldValue("name1", vtFieldValue);
  529. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  530. strArray.ElementAt(i).Add(strFieldValue.c_str());
  531. }
  532. else
  533. {
  534. strArray.ElementAt(i).Add("");
  535. }
  536. if( !pRSet->IsFieldNull("name2") )
  537. {
  538. pRSet->GetFieldValue("name2", vtFieldValue);
  539. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  540. strArray.ElementAt(i).Add(strFieldValue.c_str());
  541. }
  542. else
  543. {
  544. strArray.ElementAt(i).Add("");
  545. }
  546. if( !pRSet->IsFieldNull("phone1") )
  547. {
  548. pRSet->GetFieldValue("phone1", vtFieldValue);
  549. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  550. strArray.ElementAt(i).Add(strFieldValue.c_str());
  551. }
  552. else
  553. {
  554. strArray.ElementAt(i).Add("");
  555. }
  556. if( !pRSet->IsFieldNull("addr1") )
  557. {
  558. pRSet->GetFieldValue("addr1", vtFieldValue);
  559. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  560. strArray.ElementAt(i).Add(strFieldValue.c_str());
  561. }
  562. else
  563. {
  564. strArray.ElementAt(i).Add("");
  565. }
  566. if( !pRSet->IsFieldNull("qq1") )
  567. {
  568. pRSet->GetFieldValue("qq1", vtFieldValue);
  569. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  570. strArray.ElementAt(i).Add(strFieldValue.c_str());
  571. }
  572. else
  573. {
  574. strArray.ElementAt(i).Add("");
  575. }
  576. if( !pRSet->IsFieldNull("txtype") )
  577. {
  578. pRSet->GetFieldValue("txtype", vtFieldValue);
  579. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  580. strArray.ElementAt(i).Add(strFieldValue.c_str());
  581. }
  582. else
  583. {
  584. strArray.ElementAt(i).Add("");
  585. }
  586. if( !pRSet->IsFieldNull("ren") )
  587. {
  588. pRSet->GetFieldValue("ren", vtFieldValue);
  589. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  590. strArray.ElementAt(i).Add(strFieldValue.c_str());
  591. }
  592. else
  593. {
  594. strArray.ElementAt(i).Add("");
  595. }
  596. if( !pRSet->IsFieldNull("checkcontent") )
  597. {
  598. pRSet->GetFieldValue("checkcontent", vtFieldValue);
  599. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  600. strArray.ElementAt(i).Add(strFieldValue.c_str());
  601. }
  602. else
  603. {
  604. strArray.ElementAt(i).Add("");
  605. }
  606. if( !pRSet->IsFieldNull("clerk") )
  607. {
  608. pRSet->GetFieldValue("clerk", vtFieldValue);
  609. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  610. strArray.ElementAt(i).Add(strFieldValue.c_str());
  611. }
  612. else
  613. {
  614. strArray.ElementAt(i).Add("");
  615. }
  616. if( !pRSet->IsFieldNull("useqq") )
  617. {
  618. pRSet->GetFieldValue("useqq", vtFieldValue);
  619. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  620. strArray.ElementAt(i).Add(strFieldValue.c_str());
  621. }
  622. else
  623. {
  624. strArray.ElementAt(i).Add("");
  625. }
  626. if( !pRSet->IsFieldNull("date") )
  627. {
  628. pRSet->GetFieldValue("date", vtFieldValue);
  629. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  630. strArray.ElementAt(i).Add(strFieldValue.c_str());
  631. }
  632. else
  633. {
  634. strArray.ElementAt(i).Add("");
  635. }
  636. if( !pRSet->IsFieldNull("from") )
  637. {
  638. pRSet->GetFieldValue("from", vtFieldValue);
  639. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  640. strArray.ElementAt(i).Add(strFieldValue.c_str());
  641. }
  642. else
  643. {
  644. strArray.ElementAt(i).Add("");
  645. }
  646. if( !pRSet->IsFieldNull("clientqq") )
  647. {
  648. pRSet->GetFieldValue("clientqq", vtFieldValue);
  649. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  650. strArray.ElementAt(i).Add(strFieldValue.c_str());
  651. }
  652. else
  653. {
  654. strArray.ElementAt(i).Add("");
  655. }
  656. if( !pRSet->IsFieldNull("contact") )
  657. {
  658. pRSet->GetFieldValue("contact", vtFieldValue);
  659. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  660. strArray.ElementAt(i).Add(strFieldValue.c_str());
  661. }
  662. else
  663. {
  664. strArray.ElementAt(i).Add("");
  665. }
  666. if( !pRSet->IsFieldNull("time") )
  667. {
  668. pRSet->GetFieldValue("time", vtFieldValue);
  669. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  670. strArray.ElementAt(i).Add(strFieldValue.c_str());
  671. }
  672. else
  673. {
  674. strArray.ElementAt(i).Add("");
  675. }
  676. if( !pRSet->IsFieldNull("question") )
  677. {
  678. pRSet->GetFieldValue("question", vtFieldValue);
  679. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  680. strArray.ElementAt(i).Add(strFieldValue.c_str());
  681. }
  682. else
  683. {
  684. strArray.ElementAt(i).Add("");
  685. }
  686. if( !pRSet->IsFieldNull("solution") )
  687. {
  688. pRSet->GetFieldValue("solution", vtFieldValue);
  689. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  690. strArray.ElementAt(i).Add(strFieldValue.c_str());
  691. }
  692. else
  693. {
  694. strArray.ElementAt(i).Add("");
  695. }
  696. if( !pRSet->IsFieldNull("result") )
  697. {
  698. pRSet->GetFieldValue("result", vtFieldValue);
  699. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  700. strArray.ElementAt(i).Add(strFieldValue.c_str());
  701. }
  702. else
  703. {
  704. strArray.ElementAt(i).Add("");
  705. }
  706. if( !pRSet->IsFieldNull("autoid") )
  707. {
  708. pRSet->GetFieldValue("autoid", vtFieldValue);
  709. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  710. strArray.ElementAt(i).Add(strFieldValue.c_str());
  711. }
  712. else
  713. {
  714. strArray.ElementAt(i).Add("");
  715. }
  716. if( !pRSet->IsFieldNull("pinyin1") )
  717. {
  718. pRSet->GetFieldValue("pinyin1", vtFieldValue);
  719. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  720. strArray.ElementAt(i).Add(strFieldValue.c_str());
  721. }
  722. else
  723. {
  724. strArray.ElementAt(i).Add("");
  725. }
  726. if( !pRSet->IsFieldNull("pinyin2") )
  727. {
  728. pRSet->GetFieldValue("pinyin2", vtFieldValue);
  729. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  730. strArray.ElementAt(i).Add(strFieldValue.c_str());
  731. }
  732. else
  733. {
  734. strArray.ElementAt(i).Add("");
  735. }
  736. pRSet->MoveNext();
  737. }// end for( int i = 0; i < nRecordCount; i++ )
  738. DeleteADORecordSet(pRSet);
  739. return nRecordCount;
  740. }
  741. INT AdoImpl::GetCase200And201Data(IN LPCTSTR lpSQL, OUT CArray<CStringArray, CStringArray>& AryData, IN LPCTSTR lpFilters /* = NULL */)
  742. {
  743. int nFieldCount = 0;
  744. int nRecordCount = 0;
  745. _variant_t vtFieldValue;
  746. bool bResult = false;
  747. EnterCriticalSection( &m_csAdo );
  748. bResult = GetADODateBaseStatus();
  749. if( false == bResult )
  750. {
  751. LeaveCriticalSection( &m_csAdo );
  752. return -1;
  753. }
  754. CADORecordset* pRSet = new CADORecordset(m_pADODatabase);
  755. LeaveCriticalSection( &m_csAdo );
  756. if( NULL == pRSet )
  757. {
  758. return -1;
  759. }
  760. TCHAR szSQL[1024] = _T("");
  761. if(lpFilters && (strcmp(lpFilters,"") != 0))
  762. sprintf(szSQL,"%s where %s",lpSQL,lpFilters);
  763. else
  764. sprintf(szSQL,"%s",lpSQL);
  765. bResult = OpenADORecordSet(pRSet, szSQL);
  766. if( false == bResult )
  767. {
  768. DeleteADORecordSet(pRSet);
  769. return -1;
  770. }
  771. nRecordCount = pRSet->GetRecordCount();
  772. nFieldCount = pRSet->GetFieldCount();
  773. AryData.SetSize(nRecordCount,1);
  774. for( int i = 0; i < nRecordCount; i++ )
  775. {
  776. if( !pRSet->IsFieldNull("name") )
  777. {
  778. pRSet->GetFieldValue("name", vtFieldValue);
  779. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  780. AryData.ElementAt(i).Add(strFieldValue.c_str());
  781. }
  782. else
  783. {
  784. AryData.ElementAt(i).Add("");
  785. }
  786. pRSet->MoveNext();
  787. }// end for( int i = 0; i < nRecordCount; i++ )
  788. DeleteADORecordSet(pRSet);
  789. return nRecordCount;
  790. }
  791. INT AdoImpl::GetRenyuanData(IN LPCTSTR lpSQL, OUT CArray<CStringArray, CStringArray>& AryData, IN LPCTSTR lpFilters /* = NULL */)
  792. {
  793. int nFieldCount = 0;
  794. int nRecordCount = 0;
  795. _variant_t vtFieldValue;
  796. bool bResult = false;
  797. EnterCriticalSection( &m_csAdo );
  798. bResult = GetADODateBaseStatus();
  799. if( false == bResult )
  800. {
  801. LeaveCriticalSection( &m_csAdo );
  802. return -1;
  803. }
  804. CADORecordset* pRSet = new CADORecordset(m_pADODatabase);
  805. LeaveCriticalSection( &m_csAdo );
  806. if( NULL == pRSet )
  807. {
  808. return -1;
  809. }
  810. TCHAR szSQL[1024] = _T("");
  811. if(lpFilters && (strcmp(lpFilters,"") != 0))
  812. sprintf(szSQL,"%s where %s",lpSQL,lpFilters);
  813. else
  814. sprintf(szSQL,"%s",lpSQL);
  815. bResult = OpenADORecordSet(pRSet, szSQL);
  816. if( false == bResult )
  817. {
  818. DeleteADORecordSet(pRSet);
  819. return -1;
  820. }
  821. nRecordCount = pRSet->GetRecordCount();
  822. nFieldCount = pRSet->GetFieldCount();
  823. AryData.SetSize(nRecordCount,1);
  824. for( int i = 0; i < nRecordCount; i++ )
  825. {
  826. if( !pRSet->IsFieldNull("id") )
  827. {
  828. pRSet->GetFieldValue("id", vtFieldValue);
  829. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  830. AryData.ElementAt(i).Add(strFieldValue.c_str());
  831. }
  832. else
  833. {
  834. AryData.ElementAt(i).Add("");
  835. }
  836. if( !pRSet->IsFieldNull("staff_name") )
  837. {
  838. pRSet->GetFieldValue("staff_name", vtFieldValue);
  839. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  840. AryData.ElementAt(i).Add(strFieldValue.c_str());
  841. }
  842. else
  843. {
  844. AryData.ElementAt(i).Add("");
  845. }
  846. if( !pRSet->IsFieldNull("staff_department") )
  847. {
  848. pRSet->GetFieldValue("staff_department", vtFieldValue);
  849. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  850. AryData.ElementAt(i).Add(strFieldValue.c_str());
  851. }
  852. else
  853. {
  854. AryData.ElementAt(i).Add("");
  855. }
  856. if( !pRSet->IsFieldNull("staff_gender") )
  857. {
  858. pRSet->GetFieldValue("staff_gender", vtFieldValue);
  859. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  860. AryData.ElementAt(i).Add(strFieldValue.c_str());
  861. }
  862. else
  863. {
  864. AryData.ElementAt(i).Add("");
  865. }
  866. if( !pRSet->IsFieldNull("staff_self_phone") )
  867. {
  868. pRSet->GetFieldValue("staff_self_phone", vtFieldValue);
  869. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  870. AryData.ElementAt(i).Add(strFieldValue.c_str());
  871. }
  872. else
  873. {
  874. AryData.ElementAt(i).Add("");
  875. }
  876. if( !pRSet->IsFieldNull("staff_family_address") )
  877. {
  878. pRSet->GetFieldValue("staff_family_address", vtFieldValue);
  879. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  880. AryData.ElementAt(i).Add(strFieldValue.c_str());
  881. }
  882. else
  883. {
  884. AryData.ElementAt(i).Add("");
  885. }
  886. if( !pRSet->IsFieldNull("staff_note") )
  887. {
  888. pRSet->GetFieldValue("staff_note", vtFieldValue);
  889. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  890. AryData.ElementAt(i).Add(strFieldValue.c_str());
  891. }
  892. else
  893. {
  894. AryData.ElementAt(i).Add("");
  895. }
  896. if( !pRSet->IsFieldNull("staff_native_place") )
  897. {
  898. pRSet->GetFieldValue("staff_native_place", vtFieldValue);
  899. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  900. AryData.ElementAt(i).Add(strFieldValue.c_str());
  901. }
  902. else
  903. {
  904. AryData.ElementAt(i).Add("");
  905. }
  906. if( !pRSet->IsFieldNull("staff_citizen_id_number") )
  907. {
  908. pRSet->GetFieldValue("staff_citizen_id_number", vtFieldValue);
  909. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  910. AryData.ElementAt(i).Add(strFieldValue.c_str());
  911. }
  912. else
  913. {
  914. AryData.ElementAt(i).Add("");
  915. }
  916. if( !pRSet->IsFieldNull("staff_married") )
  917. {
  918. pRSet->GetFieldValue("staff_married", vtFieldValue);
  919. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  920. AryData.ElementAt(i).Add(strFieldValue.c_str());
  921. }
  922. else
  923. {
  924. AryData.ElementAt(i).Add("");
  925. }
  926. if( !pRSet->IsFieldNull("staff_dimission") )
  927. {
  928. pRSet->GetFieldValue("staff_dimission", vtFieldValue);
  929. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  930. AryData.ElementAt(i).Add(strFieldValue.c_str());
  931. }
  932. else
  933. {
  934. AryData.ElementAt(i).Add("");
  935. }
  936. if( !pRSet->IsFieldNull("staff_fingerprinted1") )
  937. {
  938. pRSet->GetFieldValue("staff_fingerprinted1", vtFieldValue);
  939. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  940. AryData.ElementAt(i).Add(strFieldValue.c_str());
  941. }
  942. else
  943. {
  944. AryData.ElementAt(i).Add("");
  945. }
  946. if( !pRSet->IsFieldNull("staff_fingerprinted2") )
  947. {
  948. pRSet->GetFieldValue("staff_fingerprinted2", vtFieldValue);
  949. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  950. AryData.ElementAt(i).Add(strFieldValue.c_str());
  951. }
  952. else
  953. {
  954. AryData.ElementAt(i).Add("");
  955. }
  956. if( !pRSet->IsFieldNull("level") )
  957. {
  958. pRSet->GetFieldValue("level", vtFieldValue);
  959. string strFieldValue = string((char*)(_bstr_t)vtFieldValue);
  960. AryData.ElementAt(i).Add(strFieldValue.c_str());
  961. }
  962. else
  963. {
  964. AryData.ElementAt(i).Add("");
  965. }
  966. pRSet->MoveNext();
  967. }// end for( int i = 0; i < nRecordCount; i++ )
  968. DeleteADORecordSet(pRSet);
  969. return nRecordCount;
  970. }