BOOL COM::GetUserPaiMing()//获取玩家排名
{
int i;
SQLHSTMT hstmt;
SQLRETURN retcode;
TCHAR szSQL[2048];
CString sql = _T("");
sql.Format("SELECT TOP 50 strUserID, sLevel FROM gameuser WHERE tIsOP = 0 ORDER BY sLevel DESC");
::ZeroMemory(szSQL, sizeof(szSQL));
wsprintf(szSQL,TEXT(sql));
SQLCHAR strUserSortName[CHAR_NAME_LENGTH + 1];
SQLSMALLINT uLevel;
SQLINTEGER sInd;
::ZeroMemory(strUserSortName, sizeof(strUserSortName));
uLevel = 0;
int db_index = 0;
CDatabase* pDB = g_DB[AUTOMATA_THREAD].GetDB( db_index );
if( !pDB ) return FALSE;
retcode = SQLAllocHandle( (SQLSMALLINT)SQL_HANDLE_STMT, pDB->m_hdbc, &hstmt );
if( retcode != SQL_SUCCESS )
{
TRACE("Fail To Load UserSort Data !!\n");
AfxMessageBox(_T("SELECT GAMEUSER Table Open Fail!"));
//g_DB[AUTOMATA_THREAD].ReleaseDB(db_index);
return FALSE;
}
retcode = SQLExecDirect( hstmt, (unsigned char*)szSQL, SQL_NTS);
if( retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO )
{
int cixu = 0;
while(TRUE)
{
retcode = SQLFetch(hstmt);
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
cixu++;
i = 1;
SQLGetData( hstmt, i++, SQL_C_CHAR, &strUserSortName, sizeof(strUserSortName), &sInd );
SQLGetData( hstmt, i++, SQL_C_SSHORT, &uLevel, sizeof(uLevel), &sInd );
USER *pUser = GetUser((CHAR*)strUserSortName);
if(cixu <= 0 || cixu > 50) continue;
if(pUser != NULL && pUser->m_state == STATE_GAMESTARTED)
{
pUser->m_dwCKMiMa = cixu;
CString str = _T("");
str.Format("%s",pUser->m_strLoveName);
int pos = str.Find("]");
if(pos > 0)
{
str = str.Mid(pos + 1,str.GetLength());
}
::ZeroMemory(pUser->m_strLoveName,sizeof(pUser->m_strLoveName));
sprintf(pUser->m_strLoveName,"@9第[%d]%s名",pUser->m_dwCKMiMa,str);
CBufferEx TempBuf;
TempBuf.Add(LOVE_NAME);
TempBuf.Add(pUser->m_uid + USER_BAND);
TempBuf.AddString(pUser->m_strLoveName);
pUser->SendExactScreen(TempBuf, TempBuf.GetLength());
}
SetUserTop((CHAR*)strUserSortName,cixu);
}
else break;
}
}
else if (retcode == SQL_NO_DATA)
{
g_DB[AUTOMATA_THREAD].ReleaseDB(db_index);
return FALSE;
}
else
{
retcode = SQLFreeHandle( (SQLSMALLINT)SQL_HANDLE_STMT, hstmt);
g_DB[AUTOMATA_THREAD].ReleaseDB(db_index);
return FALSE;
}
retcode = SQLFreeHandle( (SQLSMALLINT)SQL_HANDLE_STMT, hstmt);
g_DB[AUTOMATA_THREAD].ReleaseDB(db_index);
return TRUE;
}