|
楼主 |
发表于 2006-8-20 20:25:41
|
显示全部楼层
/********************************************************************
功能描述: 服务器取游戏信息时调用
********************************************************************/
void OnGetGameInfo( char* szItemInfo, char* szOnlineInfo, LPCTSTR lpszConnect )
{
CString strCmd, strItemInfo, strOnlineInfo;
CString strNode, strItem, strName, strType, strParam, strIcon, strOnline;
CDatabase db; CRecordset rs; rs.m_pDatabase = &db;
CRecordset rs1; rs1.m_pDatabase = &db;
try
{
db.OpenEx( lpszConnect, CDatabase::noOdbcDialog );
strCmd.Format( "select * from %s where %s>=-1 and %s<10",
DB_TB_INFO, DB_FD_NODE, DB_FD_NODE );
rs.Open( AFX_DB_USE_DEFAULT_TYPE, strCmd );
while( !rs.IsEOF() )
{
rs.GetFieldValue( DB_FD_NODE, strNode ); //取得节点号
rs.GetFieldValue( DB_FD_ITEM, strItem ); //取得项目号
strCmd.Format( "select sum(%s) as s from %s where %s=%s",
DB_FD_ONLINE, DB_TB_INFO, DB_FD_NODE, strItem );
rs1.Open( AFX_DB_USE_DEFAULT_TYPE, strCmd ); //查询该项目号的总在线人数
rs1.GetFieldValue( "s", strOnline );
rs1.Close();
strCmd.Format( "update %s set %s=%ld where %s=%s",
DB_TB_INFO, DB_FD_ONLINE, atol(strOnline), DB_FD_ITEM, strItem );
db.ExecuteSQL( strCmd );
rs.MoveNext();
}
rs.Close();
strCmd.Format( "select * from %s order by %s", DB_TB_INFO, DB_FD_ITEM );
rs.Open( AFX_DB_USE_DEFAULT_TYPE, strCmd );
while( !rs.IsEOF() )
{
rs.GetFieldValue( DB_FD_NODE, strNode );
rs.GetFieldValue( DB_FD_ITEM, strItem );
rs.GetFieldValue( DB_FD_NAME, strName );
rs.GetFieldValue( DB_FD_TYPE, strType );
rs.GetFieldValue( DB_FD_PARAM, strParam );
rs.GetFieldValue( DB_FD_ICON, strIcon );
rs.GetFieldValue( DB_FD_ONLINE, strOnline );
//项目表信息
strCmd.Format( "AI:%s|%s|%s|%s|%s|%s|%s|\r\n",
strNode, strItem, strName, strType, strParam, strIcon, strOnline );
strItemInfo += strCmd;
//在线人数信息
strCmd.Format( "SOI:%s|%s|\r\n",
strItem, strOnline );
strOnlineInfo += strCmd;
rs.MoveNext();
}
if( strItemInfo.GetLength() < 102400 )
strcpy( szItemInfo, strItemInfo );
if( strOnlineInfo.GetLength() < 10240 )
strcpy( szOnlineInfo, strOnlineInfo );
}
catch(...)
{
}
rs.Close(); db.Close();
} |
|