S3PCard.cpp
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:5k
源码类别:

模拟服务器

开发平台:

C/C++

  1. // S3PCard.cpp: implementation of the S3PCard class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "S3PCard.h"
  5. #include "S3PDBConnection.h"
  6. #include "S3PCardInfoDAO.h"
  7. #include "S3PDBConnector.h"
  8. #pragma warning(disable:4786)
  9. //////////////////////////////////////////////////////////////////////
  10. // Construction/Destruction
  11. //////////////////////////////////////////////////////////////////////
  12. S3PCard::S3PCard(int iType,string strIID)
  13. {
  14. if ( iType == 1 )   //通过iid做索引
  15. {
  16. findByPrimaryKey(strIID);
  17. }
  18. else if ( iType == 2 ) //通过Code做索引
  19. {
  20. findByCardCode(strIID);
  21. }
  22. }
  23. S3PCard::S3PCard(ColumnAndValue CardInfoProp)
  24. {
  25. std::string strCardCode = CardInfoProp["ccardcode"];
  26. if ( beExist("select * from cardinfo where ccardcode like '" + strCardCode + "' "))
  27. {
  28. findByCardCode(strCardCode);
  29. return;
  30. }
  31. int iResult = create(CardInfoProp);
  32. if ( iResult == 1 )
  33. {
  34. m_CardProp = CardInfoProp;
  35. }
  36. }
  37. S3PCard::~S3PCard()
  38. {
  39. m_CardProp.clear();
  40. }
  41. std::list<ColumnAndValue> S3PCard::getCardList(int iType)
  42. {
  43. std::list<ColumnAndValue> lstReturn;
  44. std::string strSQL;
  45. strSQL = " select * from cardinfo ";
  46. switch (iType)
  47. {
  48. case 0:
  49. break;
  50. case 1:
  51. strSQL = strSQL + "where iflag = 1 ";
  52. break;
  53. case 2:
  54. strSQL = strSQL + "where iflag = 2 ";
  55. break;
  56. }
  57. strSQL = strSQL + "order by ccardcode ";
  58. S3PDBConnection* pCardCon = // 连接点卡数据库
  59. S3PDBConnector::Instance()->ApplyDBConnection( def_CARDDB );
  60. if (NULL != pCardCon)
  61. {
  62. S3PCardInfoDAO card(pCardCon);
  63. S3PResult result;
  64. if ( card.Query(strSQL,result) > 0 )
  65. {
  66. for ( int i = 0; i < result.size(); i++)
  67. {
  68. ColumnAndValue cav = result[i];
  69. lstReturn.push_front(cav);
  70. }
  71. }
  72. }
  73. if ( NULL != pCardCon )
  74. {
  75. pCardCon->Close();
  76. }
  77. return lstReturn;
  78. }
  79. bool S3PCard::beExist(std::string strSQL)
  80. {
  81. S3PDBConnection* pCardCon = // 连接点卡数据库
  82. S3PDBConnector::Instance()->ApplyDBConnection( def_CARDDB );
  83. bool bReturn = false;
  84. if (NULL != pCardCon)
  85. {
  86. S3PCardInfoDAO card(pCardCon);
  87. S3PResult result;
  88. if ( card.Query(strSQL,result) > 0 )
  89. {
  90. if ( result.size() > 0 )
  91. {
  92. bReturn = true;
  93. }
  94. }
  95. }
  96. if ( NULL != pCardCon )
  97. {
  98. pCardCon->Close();
  99. }
  100. return bReturn;
  101. }
  102. ColumnAndValue S3PCard::load(std::string strSQL)
  103. {
  104. S3PDBConnection* pCardCon = // 连接点卡数据库
  105. S3PDBConnector::Instance()->ApplyDBConnection( def_CARDDB );
  106. ColumnAndValue cav;
  107. if (NULL != pCardCon)
  108. {
  109. S3PCardInfoDAO card(pCardCon);
  110. S3PResult result;
  111. if ( card.Query(strSQL, result) > 0)
  112. {
  113. if ( result.size() == 1)
  114. {
  115. cav = result[0];
  116. }
  117. }
  118. }
  119. if ( NULL != pCardCon )
  120. {
  121. pCardCon->Close();
  122. }
  123. return cav;
  124. }
  125. int S3PCard::store(ColumnAndValue CardProp)
  126. {
  127. S3PDBConnection* pCardCon = // 连接点卡数据库
  128. S3PDBConnector::Instance()->ApplyDBConnection( def_CARDDB );
  129. int iReturn = 0 ;
  130. if ( NULL != pCardCon )
  131. {
  132. S3PCardInfoDAO card( pCardCon );
  133. S3PRow row( card.GetTableName(), &CardProp,pCardCon);
  134. ColumnAndValue cavWhere;
  135. cavWhere["iid"] = CardProp["iid"];
  136. S3PRow rowWhere( card.GetTableName(), &cavWhere, pCardCon);
  137. iReturn = card.Update(&row, &rowWhere);
  138. }
  139. if ( NULL != pCardCon )
  140. {
  141. pCardCon->Close();
  142. }
  143. return iReturn;
  144. }
  145. int S3PCard::create(ColumnAndValue NewCard)
  146. {
  147. S3PDBConnection* pCardCon = // 连接点卡数据库
  148. S3PDBConnector::Instance()->ApplyDBConnection( def_CARDDB );
  149. if (NULL != pCardCon)
  150. {
  151. S3PCardInfoDAO card(pCardCon);
  152. S3PRow row(card.GetTableName(), &NewCard, pCardCon);
  153. if ( card.Add(&row) <= 0 )
  154. {
  155. pCardCon->Close();
  156. return -1;    //添加数据出错
  157. }
  158. }
  159. if ( NULL != pCardCon )
  160. {
  161. pCardCon->Close();
  162. }
  163. return 0;
  164. }
  165. int S3PCard::deletes(std::string CardCode)
  166. {
  167. S3PDBConnection* pCardCon = // 连接点卡数据库
  168. S3PDBConnector::Instance()->ApplyDBConnection( def_CARDDB );
  169. int iReturn = 0;
  170. if ( NULL != pCardCon )
  171. {
  172. S3PCardInfoDAO card(pCardCon);
  173. ColumnAndValue cav;
  174. cav["ccardcode"] = CardCode;
  175. S3PRow row (card.GetTableName(), &cav,pCardCon);
  176. iReturn = card.Delete(&row);
  177. }
  178. if ( NULL != pCardCon )
  179. {
  180. pCardCon->Close();
  181. }
  182. return iReturn;
  183. }
  184. int S3PCard::findByPrimaryKey(std::string primKey)
  185. {
  186. std::string strSQL = "select * from cardinfo where iid = " + primKey ;
  187. m_CardProp = load(strSQL);
  188. return 0;
  189. }
  190. int S3PCard::findByCardCode(std::string CardCode)
  191. {
  192. std::string strSQL = "select * from cardinfo where iid like '" + CardCode + "'";
  193. m_CardProp = load(strSQL);
  194. return 0;
  195. }
  196. int S3PCard::setCardProp(ColumnAndValue CardProp)
  197. {
  198. store(CardProp);
  199. m_CardProp = CardProp;
  200. return 0;
  201. }
  202. ColumnAndValue S3PCard::getCardProp()
  203. {
  204. return m_CardProp;
  205. }
  206. int S3PCard::remove()
  207. {
  208. std::string strCode = m_CardProp["ccardcode"];
  209. deletes(strCode);
  210. m_CardProp.clear();
  211. return 0;
  212. }