DBCheck.cpp
上传用户:swkcbjrc
上传日期:2016-04-02
资源大小:45277k
文件大小:9k
源码类别:

游戏

开发平台:

Visual C++

  1. //DBCheck.cpp内容如下:
  2. // DBCheck.cpp: implementation of the CDBCheck class.
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "DBCheck.h"
  6. //////////////////////////////////////////////////////////////////////
  7. // Construction/Destruction
  8. //////////////////////////////////////////////////////////////////////
  9. CDBCheck::CDBCheck(CString strConn)
  10. {
  11. m_strSQL=_T("");
  12. m_strConnectString=strConn;
  13. DoOpenDatabase();
  14. }
  15. CDBCheck::~CDBCheck()
  16. {
  17. DoCloseRecordset();
  18. DoCloseDatabase();
  19. }
  20. //========打开数据库=========
  21. //input: void
  22. //output: TRUE/FALSE
  23. BOOL CDBCheck::DoOpenDatabase ()
  24. {
  25. if (m_strConnectString.IsEmpty ())
  26. return FALSE;
  27. if(m_database.IsOpen ()) m_database.Close ();
  28. BOOL bRet;
  29. try{
  30. bRet=m_database.OpenEx(m_strConnectString,0);//write and read
  31. }
  32. catch(CDBException *pe){
  33. Alert(pe->m_strError );
  34. pe->Delete ();
  35. if(m_database.IsOpen ())
  36. m_database.Close ();
  37. return FALSE;
  38. }
  39. return TRUE;
  40. }
  41. //=============关闭数据库======
  42. //input: void
  43. //output: void
  44. void CDBCheck::DoCloseDatabase()
  45. {
  46. if(m_database.IsOpen ())
  47. m_database.Close();
  48. }
  49. //=============执行SQL语句========
  50. //input: 数据库SQL语句
  51. //output: TRUE/FALSE
  52. BOOL CDBCheck::DoExecuteSQL (CString strSQL)
  53. {
  54. if(strSQL.IsEmpty ()) return FALSE;
  55. //if(!DoOpenDatabase()) return FALSE;
  56. try{
  57. m_database.ExecuteSQL (strSQL);
  58. }
  59. catch(CDBException *pe){
  60. pe->Delete ();
  61. return FALSE;
  62. }
  63. //DoCloseDatabase();
  64. return TRUE;
  65. }
  66. //===========打开记录集=========
  67. //input: 打开类型,SQL语句,标志
  68. //output: TRUE/FALSE
  69. BOOL CDBCheck::DoOpenRecordset (UINT nOpenType ,CString strSQL , DWORD dwOptions)
  70. {
  71. if(strSQL.IsEmpty ()) return FALSE;
  72. //if(!DoOpenDatabase()) return FALSE;
  73. m_recordset.m_pDatabase =&m_database;
  74. if(m_recordset.IsOpen ()) m_recordset.Close ();
  75. BOOL bRet;
  76. try{
  77. // bRet=m_recordset.Open (nOpenType,strSQL,dwOptions);
  78. bRet=m_recordset.Open (AFX_DB_USE_DEFAULT_TYPE,strSQL);
  79. }
  80. catch(CDBException *pe){
  81. pe->Delete ();
  82. return FALSE;
  83. }
  84. return TRUE;
  85. }
  86. //=======关闭记录集=====
  87. //input: void
  88. //output: void
  89. void CDBCheck::DoCloseRecordset ()
  90. {
  91. if(m_recordset.IsOpen ())
  92. m_recordset.Close ();
  93. }
  94. //====获取字段值(字符串)=======
  95. //input: 字段名称,该字段的值内存
  96. //output: TRUE/FALSE
  97. BOOL CDBCheck::GetFieldString (CString strFieldName,CString &strFieldValue)
  98. {
  99. strFieldValue="";
  100. try{
  101. m_recordset.GetFieldValue (strFieldName,strFieldValue);
  102. }
  103. catch(CDBException *e)
  104. {
  105. e->Delete();
  106. return FALSE;
  107. }
  108. return TRUE;
  109. }
  110. //====获取字段值(整形)=======
  111. //input: 字段名称,该字段的值内存
  112. //output: TRUE/FALSE
  113. BOOL CDBCheck::GetFieldString (CString strFieldName,int &nFieldValue)
  114. {
  115. nFieldValue=0;
  116. CString strFieldValue;
  117. try{
  118. m_recordset.GetFieldValue (strFieldName,strFieldValue);
  119. }
  120. catch(CDBException *e)
  121. {
  122. TRACE("%s",e->m_strError );
  123. e->Delete();
  124. return FALSE;
  125. }
  126. // TRACE(strFieldValue+"n");
  127. nFieldValue=atoi(strFieldValue) ;
  128. return TRUE;
  129. }
  130. //=====给当前用户信息的结构负值==
  131. //input: 用户信息结构指针,用户名
  132. //output: void
  133. void CDBCheck::SetCurUserInfo(LPNODECURUSERINFO lpNodeCurUserInfo,
  134.   CString strUserName)
  135. {
  136. CString strFieldValue;
  137. int nFieldValue=0;
  138. if(GetFieldString("UserLevel",nFieldValue))
  139. lpNodeCurUserInfo->nUserLevel  =nFieldValue;
  140. if(GetFieldString("UserScore",nFieldValue))
  141. lpNodeCurUserInfo->nUserScore  =nFieldValue;
  142. if(GetFieldString("TotalCardCount",nFieldValue))
  143. lpNodeCurUserInfo->nTotalCardCount  =nFieldValue;
  144. if(GetFieldString("VictoryCount",nFieldValue))
  145. lpNodeCurUserInfo->nVictoryCount  =nFieldValue;
  146. if(GetFieldString("BreakNetCount",nFieldValue))
  147. lpNodeCurUserInfo->nBreakNetCount =nFieldValue;
  148. if(GetFieldString("EnterText",strFieldValue))
  149. lpNodeCurUserInfo->strEnterText =strFieldValue;
  150. if(GetFieldString("ExitText",strFieldValue))
  151. lpNodeCurUserInfo->strExitText  =strFieldValue;
  152. if(GetFieldString("ShowRegardText",nFieldValue))
  153. lpNodeCurUserInfo->bShowRegardText  =(BOOL)nFieldValue;
  154. if(GetFieldString("ShowMoveText",nFieldValue))
  155. lpNodeCurUserInfo->bShowMoveText =(BOOL)nFieldValue;
  156. if(GetFieldString("ShowEnemyText",nFieldValue))
  157. lpNodeCurUserInfo->bShowEnemyText =(BOOL)nFieldValue;
  158. if(GetFieldString("ShowSysInfo",strFieldValue))
  159. lpNodeCurUserInfo->bShowSysInfo  =(BOOL)atoi(strFieldValue);
  160. if(GetFieldString("RoomBreakRate",strFieldValue))
  161. lpNodeCurUserInfo->fRoomBreakRate =(float)atof(strFieldValue);
  162. if(GetFieldString("RoomNetSpeed",strFieldValue))
  163. lpNodeCurUserInfo->nRoomNetSpeed=atoi(strFieldValue);
  164. if(GetFieldString("RoomPlayNum",strFieldValue))
  165. lpNodeCurUserInfo->nRoomPlayNum =atoi(strFieldValue);
  166. if(GetFieldString("RoomTableNum",strFieldValue))
  167. lpNodeCurUserInfo->nRoomTableNum =atoi(strFieldValue);
  168. if(GetFieldString("RoomName",strFieldValue))
  169. lpNodeCurUserInfo->strRoomName =strFieldValue;
  170. if(GetFieldString("BoolTabBreakRate",strFieldValue))
  171. lpNodeCurUserInfo->bTableBreakRate =(BOOL)atoi(strFieldValue);
  172. if(GetFieldString("BoolTabDislike",strFieldValue))
  173. lpNodeCurUserInfo->bTableDislike=(BOOL)atoi(strFieldValue);
  174. if(GetFieldString("BoolTabNetRate",strFieldValue))
  175. lpNodeCurUserInfo->bTableNetRate =(BOOL)atoi(strFieldValue);
  176. if(GetFieldString("TableBreakRate",strFieldValue))
  177. lpNodeCurUserInfo->fTableBreakRate =(float)atof(strFieldValue);
  178. if(GetFieldString("TableNetRate",strFieldValue))
  179. lpNodeCurUserInfo->nTableNetRate =atoi(strFieldValue);
  180. if(GetFieldString("AllFriend",strFieldValue))
  181. lpNodeCurUserInfo->strAllFriend =strFieldValue;
  182. if(GetFieldString("AllEnemy",strFieldValue))
  183. lpNodeCurUserInfo->strAllEnemy=strFieldValue;
  184. if(GetFieldString("EqualCount",strFieldValue))
  185. lpNodeCurUserInfo->nEqualCount=atoi(strFieldValue);
  186. if(GetFieldString("LossCount",strFieldValue))
  187. lpNodeCurUserInfo->nLossCount=atoi(strFieldValue);
  188. if(GetFieldString("AgreeLook",strFieldValue))
  189. lpNodeCurUserInfo->bAgreeLook=atoi(strFieldValue);
  190. return;
  191. }
  192. //======校验用户是否合法=======
  193. //input: 用户ID,PASSWORD,用户信息内存指针
  194. //output: TRUE/FALSE
  195. BOOL CDBCheck::IsUserValid(CString strUserId,CString strPassWord,LPNODECURUSERINFO lpNodeCurUserInfo)
  196. {
  197. CString strSQL;
  198. BOOL bRet;
  199. //先验证该用户是否正确
  200. strSQL.Format("select * from userinfo Where userid='%s' and password='%s'",strUserId,strPassWord);
  201. bRet=DoOpenRecordset(CRecordset::dynaset,strSQL,CRecordset::readOnly);
  202. if(!bRet) { lpNodeCurUserInfo=NULL;return FALSE;}
  203. CString strUserName="";
  204. if(m_recordset.IsEOF())
  205. return FALSE;
  206. if(!m_recordset.IsEOF())
  207. {
  208. m_recordset.MoveFirst();
  209. GetFieldString("UserName",strUserName);
  210. }
  211. strUserName.TrimRight();
  212. strUserName.TrimLeft();
  213. //如果该用户存在将该用户信息从Userinfo表中取得用户信息
  214. strSQL.Format("select * from userinfo Where userId='%s'",strUserId);
  215. bRet=DoOpenRecordset(CRecordset::dynaset,strSQL,CRecordset::readOnly);
  216. if(!bRet) { lpNodeCurUserInfo=NULL;return FALSE;}
  217. int i=0;
  218. while(!m_recordset.IsEOF())
  219. {
  220. i++;
  221. m_recordset.MoveNext ();
  222. }
  223. if(i>0)
  224. {
  225. m_recordset.MoveFirst ();
  226. SetCurUserInfo(lpNodeCurUserInfo,strUserName);
  227. return TRUE;
  228. }
  229. return FALSE;
  230. }
  231. //=============更新用户的信息到数据库中
  232. //input: 用户名称,当前用户信息指针
  233. //outptu: TRUE/FALSE
  234. BOOL CDBCheck::DoUpdateRecordset(CString strUserId,LPNODECURUSERINFO lpNCUI)
  235. {
  236. if (lpNCUI==NULL) return FALSE;
  237. CString strSQL;
  238. CString strFormat;
  239. strFormat="update userinfo set ";
  240. strFormat+="userlevel=%d,userscore=%d,";
  241. strFormat+="totalcardcount=%d,victorycount=%d,breaknetcount=%d,";
  242. strFormat+="entertext='%s',exittext='%s',showregardtext=%1d,showmovetext=%1d,";
  243. strFormat+="showenemytext=%1d,";
  244. strFormat+="showsysinfo=%1d,booltabbreakrate=%1d,booltabdislike=%1d,";
  245. strFormat+="booltabnetrate=%1d,roombreakrate=%f,tablebreakrate=%f,";
  246. strFormat+="roomnetspeed=%d,roomplaynum=%d,roomtablenum=%d,";
  247. strFormat+="tablenetrate=%d,allenemy='%s',allfriend='%s',roomname='%s',";
  248. strFormat+="equalcount=%d,losscount=%d,agreelook=%d ";
  249. strFormat+="where userid='%s'";
  250. strSQL.Format (strFormat,5,//lpNCUI->nUserLevel ,
  251. lpNCUI->nUserScore ,lpNCUI->nTotalCardCount ,
  252. lpNCUI->nVictoryCount ,lpNCUI->nBreakNetCount ,
  253. lpNCUI->strEnterText ,lpNCUI->strExitText ,
  254. lpNCUI->bShowRegardText ,lpNCUI->bShowMoveText ,
  255. lpNCUI->bShowEnemyText ,lpNCUI->bShowSysInfo,
  256. lpNCUI->bTableBreakRate,lpNCUI->bTableDislike,lpNCUI->bTableNetRate,
  257. lpNCUI->fRoomBreakRate,lpNCUI->fTableBreakRate,
  258. lpNCUI->nRoomNetSpeed,lpNCUI->nRoomPlayNum,lpNCUI->nRoomTableNum,
  259. lpNCUI->nTableNetRate,lpNCUI->strAllEnemy,lpNCUI->strAllFriend,
  260. lpNCUI->strRoomName,lpNCUI->nEqualCount,lpNCUI->nLossCount,
  261. lpNCUI->bAgreeLook,
  262. strUserId);
  263. BOOL bRet;
  264. bRet=DoExecuteSQL(strSQL);
  265. if(!bRet) { lpNCUI=NULL;return FALSE;}
  266. return TRUE;
  267. }