175 lines
4.5 KiB
C++
175 lines
4.5 KiB
C++
#include "StdAfx.h"
|
||
#include<string>
|
||
|
||
void CLogicDBReqestHandler::QueryOtherGameSetsFromDB(unsigned int nActorID, int nRawServerId, int nLoginServerId)
|
||
{
|
||
|
||
|
||
DECLARE_FUN_TIME_PROF()
|
||
CDataPacket retPack;
|
||
INT_PTR nErroID = reSucc;
|
||
//数据库连接是否就绪
|
||
if ( !m_pSQLConnection->Connected() )
|
||
{
|
||
nErroID = reDbErr;
|
||
}
|
||
else
|
||
{
|
||
//(1)查询 按键数据
|
||
nErroID = m_pSQLConnection->Query(szSQLSP_LoadOtherGameSets, nActorID);//增加app的键盘,字段有500够用的
|
||
if ( !nErroID )
|
||
{
|
||
CDataPacket& retPack = allocProtoPacket(dcLoadOtherGameSets);
|
||
retPack << nRawServerId << nLoginServerId;
|
||
retPack << nActorID << (BYTE) nErroID;
|
||
GAMESETSDATA data;
|
||
MYSQL_ROW pRow = m_pSQLConnection->CurrentRow();
|
||
int nCount = m_pSQLConnection->GetRowCount();
|
||
int nValue =0;
|
||
WORD wValue =0;
|
||
memset(&data.m_vKbs,0, sizeof(data.m_vKbs));
|
||
while ( pRow)
|
||
{
|
||
if(pRow[0])
|
||
{
|
||
std::string str = "";
|
||
str = pRow[0];
|
||
if(str != "")
|
||
{
|
||
//memcpy(&data.m_vKbs, str.c_str(), sizeof(str));
|
||
strcpy(data.m_vKbs, str.c_str());
|
||
}
|
||
}
|
||
//sscanf(pRow[0], "%s", &data.m_vKbs);
|
||
|
||
pRow = m_pSQLConnection->NextRow();
|
||
}
|
||
retPack.writeBuf(&data, sizeof(GAMESETSDATA));
|
||
|
||
m_pSQLConnection->ResetQuery(); //函数调用里没有重置数据的
|
||
|
||
//(2)向数据库查询 游戏设置数据
|
||
|
||
nErroID = m_pSQLConnection->Query(szSQLSP_LoadActorGameSetData2, nActorID);
|
||
if ( !nErroID )
|
||
{
|
||
MYSQL_ROW pRow = m_pSQLConnection->CurrentRow();
|
||
unsigned long* pLength = m_pSQLConnection->GetFieldsLength(); //获取数据的长度
|
||
|
||
if ( pRow && pLength && pRow[0])
|
||
{
|
||
unsigned long long lLong =( pLength[0]);
|
||
retPack.writeBuf(LPCVOID ( pRow[0]), (size_t)lLong);
|
||
}
|
||
m_pSQLConnection->ResetQuery();
|
||
}
|
||
|
||
flushProtoPacket(retPack);
|
||
return;
|
||
}
|
||
|
||
}
|
||
if( nErroID != reSucc)
|
||
{
|
||
CDataPacket& retPack = allocProtoPacket(dcLoadOtherGameSets);
|
||
retPack << nRawServerId << nLoginServerId;
|
||
retPack << nActorID << (BYTE) nErroID;
|
||
flushProtoPacket(retPack);
|
||
}
|
||
}
|
||
|
||
void CLogicDBReqestHandler::SaveOtherGameSetsToDB(CDataPacketReader &inPacket, bool bResp)
|
||
{
|
||
DECLARE_FUN_TIME_PROF()
|
||
int nRawServerId, nLoginServerId;
|
||
unsigned int nActorId = 0;
|
||
inPacket >> nRawServerId >> nLoginServerId >> nActorId;
|
||
|
||
INT_PTR nErroID = reSucc;
|
||
if (nActorId < 0 )
|
||
{
|
||
nErroID = reNoActor;
|
||
}
|
||
else
|
||
{
|
||
|
||
//先删除
|
||
//nErrorCode =ExecuteSimplyProcedure(szSQLSP_CleanCharSkills,nActorId) ;
|
||
int nErrorCode = m_pSQLConnection->Exec(szSQLSP_DeleteOtherGameSets, nActorId);
|
||
|
||
if(!nErrorCode)
|
||
{
|
||
m_pSQLConnection->ResetQuery();
|
||
|
||
}
|
||
else
|
||
{
|
||
OutputMsg(rmError,_T("%s error"),__FUNCTION__);
|
||
return;
|
||
}
|
||
|
||
if( nErroID == reSucc)
|
||
{
|
||
if(!m_pSQLConnection->Connect())
|
||
{
|
||
nErroID = reDbErr;
|
||
}
|
||
else
|
||
{
|
||
//(1)保存 按键数据
|
||
|
||
GAMESETSDATA data;
|
||
inPacket.readBuf(&data, sizeof(GAMESETSDATA));
|
||
//inPacket >> data; //每次读一个的数据
|
||
char buff[200];
|
||
strcpy(m_pHugeSQLBuffer,szSQLSP_AddOtherGameSets); //表头放这里
|
||
strcat(m_pHugeSQLBuffer," (");
|
||
sprintf(buff,"%u,'%s'",nActorId,data.m_vKbs); //actotID
|
||
strcat(m_pHugeSQLBuffer,buff);
|
||
|
||
strcat(m_pHugeSQLBuffer," )");
|
||
//OutputMsg(rmTip, _T("sql:%s, kb:%s"), m_pHugeSQLBuffer, data.m_vKbs);
|
||
nErroID = m_pSQLConnection->Exec(m_pHugeSQLBuffer);
|
||
if (!nErroID)
|
||
{
|
||
m_pSQLConnection->ResetQuery();
|
||
}
|
||
|
||
//(2)保存 游戏设置数据
|
||
int nSize = inPacket.getAvaliableLength();
|
||
if (inPacket.getAvaliableLength() == sizeof(GAMESETSDATA2))
|
||
{
|
||
char *ptr = m_pHugeSQLBuffer;
|
||
strcpy(m_pHugeSQLBuffer,szSQLSP_UpdateGameSetData2); ptr += strlen(szSQLSP_UpdateGameSetData2);
|
||
ptr[0] = '"'; ptr += 1;
|
||
ptr += mysql_escape_string(ptr, inPacket.getOffsetPtr(), (unsigned long)sizeof(GAMESETSDATA2));
|
||
ptr[0] = '"'; ptr[1] = '\0'; ptr += 2;
|
||
|
||
char name[64];
|
||
sprintf(name," where actorid=%u",nActorId);
|
||
strcat(m_pHugeSQLBuffer,name);
|
||
|
||
nErrorCode= m_pSQLConnection->RealExec(m_pHugeSQLBuffer,strlen(m_pHugeSQLBuffer));
|
||
if(!nErrorCode) m_pSQLConnection->ResetQuery();
|
||
}
|
||
else
|
||
{
|
||
OutputMsg(rmError, _T("[Save GameSet] data len error len=%d ,require len=%d"), inPacket.getAvaliableLength(), sizeof(GAMESETSDATA2));
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
OutputMsg(rmWaning,_T("SaveOtherGameSetsToDBerror,actorID=%u"),nActorId);
|
||
}
|
||
}
|
||
|
||
if( nErroID != reSucc)
|
||
{
|
||
CDataPacket& retPack = allocProtoPacket(dcSaveOtherGameSets);
|
||
retPack << nRawServerId << nLoginServerId;
|
||
retPack << nActorId << (BYTE) nErroID;
|
||
flushProtoPacket(retPack);
|
||
}
|
||
}
|