⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbcheck.cpp

📁 数据库开发
💻 CPP
字号:
//DBCheck.cpp内容如下:
// DBCheck.cpp: implementation of the CDBCheck class.
//////////////////////////////////////////////////////////////////////

//#include "stdafx.h"
#include "DBCheck.h"


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CDBCheck::CDBCheck(CString strConn)
{
	m_strSQL=_T("");
	m_strConnectString=strConn;
	DoOpenDatabase();
}

CDBCheck::~CDBCheck()
{
	DoCloseRecordset();
	DoCloseDatabase();

}
//========打开数据库=========
//input: void
//output: TRUE/FALSE
BOOL CDBCheck::DoOpenDatabase ()
{
	if (m_strConnectString.IsEmpty ())
		return FALSE;
	if(m_database.IsOpen ()) m_database.Close ();
	BOOL bRet;
	try{
		bRet=m_database.OpenEx(m_strConnectString,0);//write and read
	}
	catch(CDBException *pe){
		Alert(pe->m_strError );
		pe->Delete ();
		if(m_database.IsOpen ())
			m_database.Close ();
		return FALSE;
	}
	return TRUE;
}

//=============关闭数据库======
//input: void
//output: void
void CDBCheck::DoCloseDatabase()
{
	if(m_database.IsOpen ())
		m_database.Close();
}

//=============执行SQL语句========
//input: 数据库SQL语句
//output: TRUE/FALSE
BOOL CDBCheck::DoExecuteSQL (CString strSQL)
{
	if(strSQL.IsEmpty ()) return FALSE;
	//if(!DoOpenDatabase()) return FALSE;
	try{
		m_database.ExecuteSQL (strSQL);
	}
	catch(CDBException *pe){
		pe->Delete ();
		return FALSE;
	}
	//DoCloseDatabase();
	return TRUE;
}


//===========打开记录集=========
//input: 打开类型,SQL语句,标志
//output: TRUE/FALSE
BOOL CDBCheck::DoOpenRecordset (UINT nOpenType ,CString strSQL , DWORD dwOptions)
{
	if(strSQL.IsEmpty ()) return FALSE;
	//if(!DoOpenDatabase()) return FALSE;
	m_recordset.m_pDatabase =&m_database;	
	if(m_recordset.IsOpen ()) m_recordset.Close ();
	BOOL bRet;
	try{
	//	bRet=m_recordset.Open (nOpenType,strSQL,dwOptions);
		bRet=m_recordset.Open (AFX_DB_USE_DEFAULT_TYPE,strSQL);
	}
	catch(CDBException *pe){
		pe->Delete ();
		return FALSE;
	}
	
	return TRUE;
}

//=======关闭记录集=====
//input: void
//output: void
void CDBCheck::DoCloseRecordset ()
{
	if(m_recordset.IsOpen ())
		m_recordset.Close ();
}


//====获取字段值(字符串)=======
//input: 字段名称,该字段的值内存
//output: TRUE/FALSE
BOOL CDBCheck::GetFieldString (CString strFieldName,CString &strFieldValue)
{
	strFieldValue="";
	try{
		m_recordset.GetFieldValue (strFieldName,strFieldValue);
	}
	catch(CDBException *e)
	{
		e->Delete();
		return FALSE;
	}	
	return TRUE;
	
}
//====获取字段值(整形)=======
//input: 字段名称,该字段的值内存
//output: TRUE/FALSE
BOOL CDBCheck::GetFieldString (CString strFieldName,int &nFieldValue)
{
	nFieldValue=0;
	CString strFieldValue;
	try{
		m_recordset.GetFieldValue (strFieldName,strFieldValue);
	}
	catch(CDBException *e)
	{
		TRACE("%s",e->m_strError );
		e->Delete();
		return FALSE;
	}
//	TRACE(strFieldValue+"\n");
	nFieldValue=atoi(strFieldValue) ;
	return TRUE;
	
}
//=====给当前用户信息的结构负值==
//input: 用户信息结构指针,用户名
//output: void
void CDBCheck::SetCurUserInfo(LPNODECURUSERINFO lpNodeCurUserInfo,
							  CString strUserName)
{
	CString strFieldValue;
	int nFieldValue=0;
	if(GetFieldString("UserLevel",nFieldValue))
			lpNodeCurUserInfo->nUserLevel  =nFieldValue;
	if(GetFieldString("UserScore",nFieldValue))
			lpNodeCurUserInfo->nUserScore  =nFieldValue;
	if(GetFieldString("TotalCardCount",nFieldValue))
			lpNodeCurUserInfo->nTotalCardCount  =nFieldValue;
	if(GetFieldString("VictoryCount",nFieldValue))
			lpNodeCurUserInfo->nVictoryCount  =nFieldValue;
	if(GetFieldString("BreakNetCount",nFieldValue))
			lpNodeCurUserInfo->nBreakNetCount =nFieldValue;
	if(GetFieldString("EnterText",strFieldValue))
			lpNodeCurUserInfo->strEnterText =strFieldValue;
	if(GetFieldString("ExitText",strFieldValue))
			lpNodeCurUserInfo->strExitText  =strFieldValue;
	if(GetFieldString("ShowRegardText",nFieldValue))
			lpNodeCurUserInfo->bShowRegardText  =(BOOL)nFieldValue;
	if(GetFieldString("ShowMoveText",nFieldValue))
			lpNodeCurUserInfo->bShowMoveText =(BOOL)nFieldValue;
	if(GetFieldString("ShowEnemyText",nFieldValue))
			lpNodeCurUserInfo->bShowEnemyText =(BOOL)nFieldValue;
	if(GetFieldString("ShowSysInfo",strFieldValue))
			lpNodeCurUserInfo->bShowSysInfo  =(BOOL)atoi(strFieldValue);
	if(GetFieldString("RoomBreakRate",strFieldValue))
			lpNodeCurUserInfo->fRoomBreakRate =(float)atof(strFieldValue);
	if(GetFieldString("RoomNetSpeed",strFieldValue))
			lpNodeCurUserInfo->nRoomNetSpeed=atoi(strFieldValue);
	if(GetFieldString("RoomPlayNum",strFieldValue))
			lpNodeCurUserInfo->nRoomPlayNum =atoi(strFieldValue);
	if(GetFieldString("RoomTableNum",strFieldValue))
			lpNodeCurUserInfo->nRoomTableNum =atoi(strFieldValue);
	if(GetFieldString("RoomName",strFieldValue))
			lpNodeCurUserInfo->strRoomName =strFieldValue;
	if(GetFieldString("BoolTabBreakRate",strFieldValue))
			lpNodeCurUserInfo->bTableBreakRate =(BOOL)atoi(strFieldValue);
	if(GetFieldString("BoolTabDislike",strFieldValue))
			lpNodeCurUserInfo->bTableDislike=(BOOL)atoi(strFieldValue);
	if(GetFieldString("BoolTabNetRate",strFieldValue))
			lpNodeCurUserInfo->bTableNetRate =(BOOL)atoi(strFieldValue);
	if(GetFieldString("TableBreakRate",strFieldValue))
			lpNodeCurUserInfo->fTableBreakRate =(float)atof(strFieldValue);
	if(GetFieldString("TableNetRate",strFieldValue))
			lpNodeCurUserInfo->nTableNetRate =atoi(strFieldValue);
	if(GetFieldString("AllFriend",strFieldValue))
			lpNodeCurUserInfo->strAllFriend =strFieldValue;
	if(GetFieldString("AllEnemy",strFieldValue))
			lpNodeCurUserInfo->strAllEnemy=strFieldValue;
	if(GetFieldString("EqualCount",strFieldValue))
			lpNodeCurUserInfo->nEqualCount=atoi(strFieldValue);
	if(GetFieldString("LossCount",strFieldValue))
			lpNodeCurUserInfo->nLossCount=atoi(strFieldValue);
	if(GetFieldString("AgreeLook",strFieldValue))
		lpNodeCurUserInfo->bAgreeLook=atoi(strFieldValue);
	return;
}

//======校验用户是否合法=======
//input: 用户ID,PASSWORD,用户信息内存指针
//output: TRUE/FALSE
BOOL CDBCheck::IsUserValid(CString strUserId,CString strPassWord,LPNODECURUSERINFO lpNodeCurUserInfo)
{
	CString strSQL;
	BOOL bRet;
	//先验证该用户是否正确
	strSQL.Format("select * from userinfo Where userid='%s' and password='%s'",strUserId,strPassWord);
	bRet=DoOpenRecordset(CRecordset::dynaset,strSQL,CRecordset::readOnly);
	if(!bRet) { lpNodeCurUserInfo=NULL;return FALSE;}
	CString strUserName="";
	if(m_recordset.IsEOF())
		return FALSE;
	if(!m_recordset.IsEOF())
	{
		m_recordset.MoveFirst();
		GetFieldString("UserName",strUserName);		
	}
	strUserName.TrimRight();
	strUserName.TrimLeft();
	//如果该用户存在将该用户信息从Userinfo表中取得用户信息
	strSQL.Format("select * from userinfo Where userId='%s'",strUserId);
	bRet=DoOpenRecordset(CRecordset::dynaset,strSQL,CRecordset::readOnly);
	if(!bRet) { lpNodeCurUserInfo=NULL;return FALSE;}
	int i=0;
	while(!m_recordset.IsEOF())
	{
		i++;
		m_recordset.MoveNext ();
	}
	if(i>0)
	{
		m_recordset.MoveFirst ();
		SetCurUserInfo(lpNodeCurUserInfo,strUserName);
		return TRUE;
	}
	return FALSE;
}

//=============更新用户的信息到数据库中
//input: 用户名称,当前用户信息指针
//outptu: TRUE/FALSE
BOOL CDBCheck::DoUpdateRecordset(CString strUserId,LPNODECURUSERINFO lpNCUI)
{
	if (lpNCUI==NULL) return FALSE;
	CString strSQL;
	CString strFormat;

	strFormat="update userinfo set ";
	strFormat+="userlevel=%d,userscore=%d,";
	strFormat+="totalcardcount=%d,victorycount=%d,breaknetcount=%d,";
	strFormat+="entertext='%s',exittext='%s',showregardtext=%1d,showmovetext=%1d,";
	strFormat+="showenemytext=%1d,";
	strFormat+="showsysinfo=%1d,booltabbreakrate=%1d,booltabdislike=%1d,";
	strFormat+="booltabnetrate=%1d,roombreakrate=%f,tablebreakrate=%f,";
	strFormat+="roomnetspeed=%d,roomplaynum=%d,roomtablenum=%d,";
	strFormat+="tablenetrate=%d,allenemy='%s',allfriend='%s',roomname='%s',";
	strFormat+="equalcount=%d,losscount=%d,agreelook=%d ";
	strFormat+="where userid='%s'";
	
	strSQL.Format (strFormat,5,//lpNCUI->nUserLevel ,
					lpNCUI->nUserScore ,lpNCUI->nTotalCardCount ,
					lpNCUI->nVictoryCount ,lpNCUI->nBreakNetCount ,
					lpNCUI->strEnterText ,lpNCUI->strExitText ,
					lpNCUI->bShowRegardText ,lpNCUI->bShowMoveText ,
					lpNCUI->bShowEnemyText ,lpNCUI->bShowSysInfo,
					lpNCUI->bTableBreakRate,lpNCUI->bTableDislike,lpNCUI->bTableNetRate,
					lpNCUI->fRoomBreakRate,lpNCUI->fTableBreakRate,
					lpNCUI->nRoomNetSpeed,lpNCUI->nRoomPlayNum,lpNCUI->nRoomTableNum,
					lpNCUI->nTableNetRate,lpNCUI->strAllEnemy,lpNCUI->strAllFriend,
					lpNCUI->strRoomName,lpNCUI->nEqualCount,lpNCUI->nLossCount,
					lpNCUI->bAgreeLook,
					strUserId);

	BOOL bRet;
	bRet=DoExecuteSQL(strSQL);
	if(!bRet) { lpNCUI=NULL;return FALSE;}
	return TRUE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -