예제 #1
0
void CServiceManage::ClearRoomTWRecode(int iRoomID)
{
	HANDLE hDatabase=sqlAddConnection("BZGameLocal.BCF");
	if(hDatabase<(HANDLE)0x1000)
		return;

	HANDLE hRecord=sqlSPSetName(hDatabase,"SP_GetGameServerList",true);
	if(hRecord<(HANDLE)0x1000)
		return;

	sqlCloseRecord(hDatabase, hRecord);
    sqlSPClose(hDatabase, hRecord);

    hRecord=sqlSPSetName(hDatabase,"SP_ClearRoomTWLoginRecord");
    if(hRecord>=(HANDLE)0x1000)
    {
		sqlSPAddPara(hDatabase,hRecord,"@RoomID", iRoomID);
        sqlSPExec(hDatabase,hRecord);
        sqlCloseRecord(hDatabase, hRecord);
        sqlSPClose(hDatabase, hRecord);
    }
	sqlCloseConnection(hDatabase);
}
예제 #2
0
////修改一条组件记录在ServerDllInfo表中
bool CServiceManage::ModifCom(CListCtrl * pListCtrl,SC_ServiceInfoStruct * avantp,SC_ServiceInfoStruct pServiceInfo)
{
	HANDLE hDatabase=sqlAddConnection("BZGameLocal.BCF");
	if(hDatabase<(HANDLE)0x1000)
		return false;
	HANDLE hRecord=sqlSPSetName(hDatabase,"SP_EditGameServer",true);
	if(hRecord<(HANDLE)0x1000)
	{
		sqlSPClose(hDatabase,hRecord);
		return false;
	}


	sqlSPAddPara(hDatabase,hRecord,"@ServerInfoID",pServiceInfo.uServiceID);
	sqlSPAddPara(hDatabase,hRecord,"@NameID",pServiceInfo.ServiceInfo.uNameID);
	sqlSPAddPara(hDatabase,hRecord,"@DeskPeople",pServiceInfo.ServiceInfo.uDeskPeople);
	sqlSPAddPara(hDatabase,hRecord,"@SuppoerType",pServiceInfo.ServiceInfo.uSupportType);
	sqlSPAddPara(hDatabase,hRecord,"@ServerVer",pServiceInfo.ServiceInfo.uServiceVer);
	sqlSPAddPara(hDatabase,hRecord,"@GameName",pServiceInfo.ServiceInfo.szGameName,sizeof(pServiceInfo.ServiceInfo.szGameName));
	sqlSPAddPara(hDatabase,hRecord,"@GameTable",pServiceInfo.ServiceInfo.szGameTable,sizeof(pServiceInfo.ServiceInfo.szGameTable));
	sqlSPAddPara(hDatabase,hRecord,"@DllFileName",pServiceInfo.ServiceInfo.szDLLFileName,sizeof(pServiceInfo.ServiceInfo.szDLLFileName));

	sqlSPExec(hDatabase,hRecord);

	int ret=sqlSPGetReturnValue(hDatabase,hRecord);
	sqlCloseConnection(hDatabase);
	//使无重复ID
	if (ret==1)
	{
		if (m_pIMessage!=NULL) m_pIMessage->ShowMessage("ServerDllInfo 表中无此ServerInfoID相同的组件,请刷新组件! ");
		//AfxMessageBox("ServerDllInfo 表中无此ServerInfoID相同的组件,请刷新组件! ");
		return false;
	}

	for(int i=0;i<= m_ServiceInfo.GetUpperBound();i++)
	{
		SC_ServiceInfoStruct *p;
		p = (SC_ServiceInfoStruct *) m_ServiceInfo.GetAt(i);
		if(p->uServiceID==pServiceInfo.uServiceID)
		{
			m_ServiceInfo.RemoveAt(i);//删除旧的记录(要么?)
			break;
		}
	}
	m_ServiceInfo.Add(&pServiceInfo);//同时把新的组件加到m_ServiceInfo中
	UpdateComDLLList(pListCtrl);
	return true;

}
예제 #3
0
// 删除数据库房间信息 
bool CServiceManage::DeleteGameRoomInfo(SC_GameRoomInitStruct * pComRoomInfo)
{
	try
	{

		HANDLE hDatabase=sqlAddConnection("BZGameLocal.bcf");
		if(hDatabase<(HANDLE)0x1000)
		{
			
			return false;
		}
		HANDLE hRecord=sqlSPSetName(hDatabase,"SP_EraseRoomInfo");
		if(hRecord<(HANDLE)0x1000)
		{
			sqlSPClose(hDatabase,hRecord);
			return false;
		}

		sqlSPAddPara(hDatabase,hRecord,"@RoomID",pComRoomInfo->InitInfo.uRoomID);

		sqlSPExec(hDatabase,hRecord);

		sqlCloseConnection(hDatabase);

		SC_GameRoomInitStruct *p;
		for(int i = 0;i<=m_ComRoomInfo.GetUpperBound();i++)
		{
			p=(SC_GameRoomInitStruct *)m_ComRoomInfo.GetAt(i);
			if(p->uServiceID==pComRoomInfo->uServiceID && p->InitInfo.szGameRoomName==pComRoomInfo->InitInfo.szGameRoomName)
			{
				m_ComRoomInfo.RemoveAt(i);
				break;
			}
		}

		if (m_pIMessage!=NULL) m_pIMessage->ShowMessage(TEXT("删除组件的子实例信息完成!"));
		return true;
	}
	catch (...) 
	{ TRACE("CATCH:%s with %s\n",__FILE__,__FUNCTION__);
		if (m_pIMessage!=NULL) m_pIMessage->ShowMessage(TEXT("删除组件的子实例信息发生错误,稍后再次尝试..."));
	}
	return false;
}
예제 #4
0
//增加一条组件记录在ServerDllInfo表中,同时把新的组件加到m_ServiceInfo中
bool CServiceManage::SetupCom(CListCtrl * pListCtrl,SC_ServiceInfoStruct pServiceInfo)
{

	HANDLE hDatabase=sqlAddConnection("BZGameLocal.BCF");
	if(hDatabase<(HANDLE)0x1000)
	{
		
		return false;
	}
	HANDLE hRecord=sqlSPSetName(hDatabase,"SP_AddGameServer",true);
	if(hRecord<(HANDLE)0x1000)
	{
		sqlSPClose(hDatabase,hRecord);
		return false;
	}

	sqlSPAddPara(hDatabase,hRecord,"@ServerInfoID",pServiceInfo.uServiceID);
	sqlSPAddPara(hDatabase,hRecord,"@NameID",pServiceInfo.ServiceInfo.uNameID);
	sqlSPAddPara(hDatabase,hRecord,"@DeskPeople",pServiceInfo.ServiceInfo.uDeskPeople);
	sqlSPAddPara(hDatabase,hRecord,"@SuppoerType",pServiceInfo.ServiceInfo.uSupportType);
	sqlSPAddPara(hDatabase,hRecord,"@ServerVer",pServiceInfo.ServiceInfo.uServiceVer);
	sqlSPAddPara(hDatabase,hRecord,"@GameName",pServiceInfo.ServiceInfo.szGameName,sizeof(pServiceInfo.ServiceInfo.szGameName));
	sqlSPAddPara(hDatabase,hRecord,"@GameTable",pServiceInfo.ServiceInfo.szGameTable,sizeof(pServiceInfo.ServiceInfo.szGameTable));
	sqlSPAddPara(hDatabase,hRecord,"@DllFileName",pServiceInfo.ServiceInfo.szDLLFileName,sizeof(pServiceInfo.ServiceInfo.szDLLFileName));

	sqlSPExec(hDatabase,hRecord);

	int ret=sqlSPGetReturnValue(hDatabase,hRecord);
	sqlCloseConnection(hDatabase);

	if(ret==1)
	{
		if (m_pIMessage!=NULL) m_pIMessage->ShowMessage("不能新建和现有组件ServerInfoID相同的组件,请重新填写! :-) ");//AfxMessageBox("不能新建和现有组件ServerInfoID相同的组件,请重新填写! :-) ");
		return false;
	}

	m_ServiceInfo.Add(&pServiceInfo);//同时把新的组件加到m_ServiceInfo中
	UpdateComDLLList(pListCtrl);
	return true;

}
예제 #5
0
//更新游戏列表
bool CServerGameListManage0::UpdateGameListBuffer(HANDLE hDatabase)
{
	//try
	//{
	//读取游戏类型列表
	HANDLE hRecord=sqlSPSetName(hDatabase,"SP_GetGameKind");
	if(hRecord<(HANDLE)0x1000)
		return false;

	if(!sqlSPExec(hDatabase,hRecord,true))
		return false;

	DWORD dwReadKindCount=(DWORD)sqlGetRecordCount(hDatabase,hRecord);


	if (dwReadKindCount>m_dwKindBufCount)
	{
		delete [] m_pKindPtr;
		m_pKindPtr=new ComKindInfo [dwReadKindCount];
		if (m_pKindPtr==NULL) 
		{
			sqlSPClose(hDatabase,hRecord); // zxj dfw 2009-11-12
			return false;
		}
		m_dwKindBufCount=dwReadKindCount;
	}

	//读取数据库获取游戏类型
	ComKindInfo KindRead;
	KindRead.Head.uSize=sizeof(KindRead);
	KindRead.Head.bDataType=GLK_GAME_KIND;
	m_dwKindCount=dwReadKindCount;
	int iCount=0;
	while(!sqlEndOfFile(hDatabase,hRecord))
	{
		sqlGetValue(hDatabase,hRecord,TEXT("KindID"),KindRead.uKindID);
		sqlGetValue(hDatabase,hRecord,TEXT("KindName"),KindRead.szKindName,sizeof(KindRead.szKindName));

		// duanxiaohui 20111107
		sqlGetValue(hDatabase,hRecord,TEXT("ParentKindID"),KindRead.uParentKindID);
		// end duanxiaohui

		*(m_pKindPtr+(iCount++))=KindRead;

		sqlMoveNext(hDatabase,hRecord);
	}
	sqlSPClose(hDatabase,hRecord);

	//读取名字信息
	hRecord=sqlSPSetName(hDatabase,"SP_GetGameName");
	if(hRecord<(HANDLE)0x1000)
		return false;

	if(!sqlSPExec(hDatabase,hRecord,true))
		return false;

	DWORD dwReadNameCount=(DWORD)sqlGetRecordCount(hDatabase,hRecord);
	if (dwReadNameCount>m_dwNameBufCount)
	{
		delete [] m_pNamePtr;
		m_pNamePtr=new ComNameInfo [dwReadNameCount];
		if (m_pNamePtr==NULL) 
		{
			sqlSPClose(hDatabase,hRecord); // zxj dfw 2009-11-12
			return false;
		}
		m_dwNameBufCount=dwReadNameCount;
	}

	//读取数据库
	ComNameInfo NameRead;
	NameRead.Head.uSize=sizeof(NameRead);
	NameRead.Head.bDataType=GLK_GAME_NAME;
	m_dwNameCount=dwReadNameCount;
	iCount=0;
	while(!sqlEndOfFile(hDatabase,hRecord))
	{
		sqlGetValue(hDatabase,hRecord,TEXT("KindID"),NameRead.uKindID);
		sqlGetValue(hDatabase,hRecord,TEXT("NameID"),NameRead.uNameID);
		sqlGetValue(hDatabase,hRecord,TEXT("ComName"),NameRead.szGameName,sizeof(NameRead.szGameName));
		sqlGetValue(hDatabase,hRecord,TEXT("ComProcess"),NameRead.szGameProcess,sizeof(NameRead.szGameProcess));
		*(m_pNamePtr+(iCount++))=NameRead;
		sqlMoveNext(hDatabase,hRecord);
		TRACE("SP_GetGameName: %d %d %s %s\n",NameRead.uKindID,NameRead.uNameID,NameRead.szGameName,NameRead.szGameProcess);
	}
	sqlSPClose(hDatabase,hRecord);


	//读取房间信息
	hRecord=sqlSPSetName(hDatabase,"SP_GetOnlineRoom");
	if(hRecord<(HANDLE)0x1000)
		return false;

	if(!sqlSPExec(hDatabase,hRecord,true))
		return false;

	DWORD dwReadRoomCount=(DWORD)sqlGetRecordCount(hDatabase,hRecord);

	bool bNew=false;
	if (dwReadRoomCount>m_dwRoomBufCount)
	{
		delete [] m_pRoomPtr;
		m_pRoomPtr=new ComRoomInfo [dwReadRoomCount];
		if (m_pRoomPtr==NULL) 
		{
			sqlSPClose(hDatabase,hRecord); // zxj dfw 2009-11-12
			throw DTR_GP_ERROR_UNKNOW;
		}
		m_dwRoomBufCount=dwReadRoomCount;
		bNew=true;
	}

	//读取数据库
	ComRoomInfo RoomRead;
	RoomRead.Head.uSize=sizeof(RoomRead);
	RoomRead.Head.bDataType=GLK_GAME_ROOM;
	m_dwRoomCount=dwReadRoomCount;
	iCount=0;
	bool b=false;
	while(!sqlEndOfFile(hDatabase,hRecord))
	{
		b=sqlGetValue(hDatabase,hRecord,TEXT("GameKindID"),RoomRead.uKindID);
		b=sqlGetValue(hDatabase,hRecord,TEXT("GameNameID"),RoomRead.uNameID);
		b=sqlGetValue(hDatabase,hRecord,TEXT("RoomID"),RoomRead.uRoomID);
		b=sqlGetValue(hDatabase,hRecord,TEXT("GameTypeID"),RoomRead.uComType);
		if(bNew)
			RoomRead.uPeopleCount=0;
		//sqlGetValue(hDatabase,hRecord,TEXT("OnLineCount"),RoomRead.uPeopleCount);
		b=sqlGetValue(hDatabase,hRecord,TEXT("VirtualUser"),RoomRead.uVirtualUser);//20081211 , Fred Huang
		RoomRead.uPeopleCount+=RoomRead.uVirtualUser;//20081211 , Fred Huang
		b=sqlGetValue(hDatabase,hRecord,TEXT("VirtualGameTime"),RoomRead.uVirtualGameTime);//20081211 , Fred Huang
		b=sqlGetValue(hDatabase,hRecord,TEXT("RoomRule"),RoomRead.dwRoomRule);//20081211 , Fred Huang

		b=sqlGetValue(hDatabase,hRecord,TEXT("SocketPort"),RoomRead.uServicePort);
		b=sqlGetValue(hDatabase,hRecord,TEXT("DeskPeople"),RoomRead.uDeskPeople);
		b=sqlGetValue(hDatabase,hRecord,TEXT("DeskCount"),RoomRead.uDeskCount);
		b=sqlGetValue(hDatabase,hRecord,TEXT("ServerIP"),RoomRead.szServiceIP,sizeof(RoomRead.szServiceIP));
		//wushuqun 2009.6.5
		//混战场房间名称   --begin
		b=sqlGetValue(hDatabase,hRecord,TEXT("BattleRoomID"),RoomRead.uBattleRoomID);
		b=sqlGetValue(hDatabase,hRecord,TEXT("BattleMatchTable"),RoomRead.szBattleGameTable,sizeof(RoomRead.szBattleGameTable));

		RoomRead.i64TimeStart = 0;
		RoomRead.i64TimeEnd = 0;
		if (RoomRead.dwRoomRule & GRR_CONTEST)
		{
			int nYear = 0, nMonth = 0, nDate = 0, nHour = 0, nMin = 0, nSec = 0, nss = 0;  
			CString temp;
			sqlGetValue(hDatabase, hRecord, TEXT("StartTime"), temp);
			if (temp != "")
			{
				sscanf(temp.GetBuffer(), TEXT("%d-%d-%d %d:%d:%d.%d"), &nYear, &nMonth, &nDate, &nHour, &nMin, &nSec, &nss);

				CTime _t(nYear, nMonth, nDate, nHour, nMin, nSec); 
				RoomRead.i64TimeStart = _t.GetTime();
			}
			else
			{
				RoomRead.i64TimeStart = 0;
			}
			sqlGetValue(hDatabase, hRecord, TEXT("EndTime"), temp);
			if (temp != "")
			{
				sscanf(temp.GetBuffer(), TEXT("%d-%d-%d %d:%d:%d.%d"), &nYear, &nMonth, &nDate, &nHour, &nMin, &nSec, &nss);

				CTime _t(nYear, nMonth, nDate, nHour, nMin, nSec); 
				RoomRead.i64TimeEnd = _t.GetTime();
			}
			else
			{
				RoomRead.i64TimeEnd = 0;
			}
			sqlGetValue(hDatabase, hRecord, TEXT("ContestID"), RoomRead.iContestID);
		}
		
		char szRoomName[61];
		memset(szRoomName,0,sizeof(szRoomName));
		if (RoomRead.uBattleRoomID > 0)
		{
			HANDLE hRecordTmp=sqlSPSetName(hDatabase,"SP_GetBattleRoomName");
			sqlSPAddPara(hDatabase,hRecordTmp,"@BattleRoomID",RoomRead.uBattleRoomID);
			sqlSPExec(hDatabase,hRecordTmp,true);
			sqlGetValue(hDatabase,hRecordTmp,TEXT("RoomName"),szRoomName,sizeof(szRoomName));
			sqlSPClose(hDatabase,hRecordTmp); // zxj dfw 2009-11-12
		}
		else
		{
			sqlGetValue(hDatabase,hRecord,TEXT("RoomName"),szRoomName,sizeof(szRoomName));
		}
		memcpy(RoomRead.szGameRoomName,szRoomName,sizeof(szRoomName));  
		//--end

		int iVIPRoom = 0;
		b=sqlGetValue(hDatabase,hRecord,TEXT("VIPRoom"),iVIPRoom);
		RoomRead.bVIPRoom = (iVIPRoom!=0);
		b=sqlGetValue(hDatabase,hRecord,TEXT("Version"),RoomRead.uVer);

		//{{Add by lxl 20101008 判断该房间是否具有密码
		char szPassWord[61];
		memset(szPassWord, 0, sizeof(szPassWord));
		b=sqlGetValue(hDatabase,hRecord,TEXT("RoomPassword"), szPassWord, sizeof(szPassWord));
		if (strlen(szPassWord)>10) // MD5密码一定有16字节以上,如果没这么多,表示是个无效的字符串
		{
			RoomRead.bHasPassword = true;
		}
		else
		{
			RoomRead.bHasPassword = false;
		}

		//租赁房间ID与时间
		sqlGetValue(hDatabase,hRecord,TEXT("tenancyID"), RoomRead.iLeaseID);
		if (RoomRead.iLeaseID != 0)
		{
			int nYear = 0, nMonth = 0, nDate = 0, nHour = 0, nMin = 0, nSec = 0, nss = 0;  
			CString temp;
			sqlGetValue(hDatabase, hRecord, TEXT("OpenRoomDate"), temp);
			if (temp != "")
			{
				sscanf(temp.GetBuffer(), TEXT("%d-%d-%d %d:%d:%d.%d"), &nYear, &nMonth, &nDate, &nHour, &nMin, &nSec, &nss);

				CTime _t(nYear, nMonth, nDate, nHour, nMin, nSec); 
				RoomRead.i64LeaseTimeStart = _t.GetTime();
			}
			else
			{
				RoomRead.i64LeaseTimeStart = 0;
			}
			int idays = 0;
			sqlGetValue(hDatabase,hRecord,TEXT("AppleyDays"),idays);
			RoomRead.i64LeaseTimeEnd = RoomRead.i64LeaseTimeStart + idays * 24 * 60 * 60;
		}


		*(m_pRoomPtr+(iCount++))=RoomRead;
		sqlMoveNext(hDatabase,hRecord);
	}
	sqlSPClose(hDatabase,hRecord);
	return true;

}
예제 #6
0
//更新组件列表
bool CServiceManage::UpdateComDLLList(CListCtrl * pListCtrl)
{
	
	HANDLE hDatabase=sqlAddConnection("BZGameLocal.BCF");
	if(hDatabase<(HANDLE)0x1000)
	{
		
		return false;
	}

	HANDLE hRecord=sqlSPSetName(hDatabase,"SP_GetGameServerList",true);
	if(hRecord<(HANDLE)0x1000)
	{
		sqlSPClose(hDatabase,hRecord);
		return false;
	}

	sqlSPExec(hDatabase,hRecord,true);
	//写入数据前应清空记录
	pListCtrl->DeleteAllItems();
	m_ServiceInfo.RemoveAll();

	//读取资料
	TCHAR szBuffer[50];

	while(!sqlEndOfFile(hDatabase,hRecord))
	{
		//定义变量
		SC_ServiceInfoStruct * pServiceInfo=new SC_ServiceInfoStruct;
		memset(pServiceInfo,0,sizeof(SC_ServiceInfoStruct));
		m_ServiceInfo.Add(pServiceInfo);

		//读取数据
		sqlGetValue(hDatabase,hRecord,TEXT("ServerInfoID"),pServiceInfo->uServiceID);
		sqlGetValue(hDatabase,hRecord,TEXT("NameID"),pServiceInfo->ServiceInfo.uNameID);
		sqlGetValue(hDatabase,hRecord,TEXT("DeskPeople"),pServiceInfo->ServiceInfo.uDeskPeople);
		sqlGetValue(hDatabase,hRecord,TEXT("SupportType"),pServiceInfo->ServiceInfo.uSupportType);
		sqlGetValue(hDatabase,hRecord,TEXT("ServiceVer"),pServiceInfo->ServiceInfo.uServiceVer);
		sqlGetValue(hDatabase,hRecord,TEXT("GameName"),pServiceInfo->ServiceInfo.szGameName,sizeof(pServiceInfo->ServiceInfo.szGameName));
		sqlGetValue(hDatabase,hRecord,TEXT("GameTable"),pServiceInfo->ServiceInfo.szGameTable,sizeof(pServiceInfo->ServiceInfo.szGameTable));
		sqlGetValue(hDatabase,hRecord,TEXT("DLLFileName"),pServiceInfo->ServiceInfo.szDLLFileName,sizeof(pServiceInfo->ServiceInfo.szDLLFileName));
		//sqlGetValue(hDatabase,hRecord,TEXT("Writer"),pServiceInfo->ServiceInfo.szWriter,sizeof(pServiceInfo->ServiceInfo.szWriter));
		//sqlGetValue(hDatabase,hRecord,TEXT("DllNote"),pServiceInfo->ServiceInfo.szDllNote,sizeof(pServiceInfo->ServiceInfo.szDllNote));

        // PengJiLin, 2011-4-2, 指定哪些游戏是可用的
        if(FALSE == m_GameSelecter.GameIsUsable(pServiceInfo->ServiceInfo.uNameID))
        {
            memset(pServiceInfo,0,sizeof(SC_ServiceInfoStruct));
            sqlMoveNext(hDatabase,hRecord);
            continue;
        }

		//写入数据
		struct stat FileStat;
		int iItem=pListCtrl->InsertItem(pListCtrl->GetItemCount(),ltoa(pServiceInfo->uServiceID,szBuffer,10));
		pListCtrl->SetItem(iItem,1,1,pServiceInfo->ServiceInfo.szGameName,0,0,0,0);
		if (stat(pServiceInfo->ServiceInfo.szDLLFileName,&FileStat)==0) 
		{
			pListCtrl->SetItem(iItem,2,1,TEXT("已安装"),0,0,0,0);
			pServiceInfo->uServiceStation = 1;
		}
		else 
		{
			pListCtrl->SetItem(iItem,2,1,TEXT("未安装"),0,0,0,0);
			pServiceInfo->uServiceStation = 0;
		}
		pListCtrl->SetItem(iItem,3,1,ltoa(pServiceInfo->ServiceInfo.uServiceVer,szBuffer,10),0,0,0,0);
		pListCtrl->SetItem(iItem,4,1,ltoa(pServiceInfo->ServiceInfo.uDeskPeople,szBuffer,10),0,0,0,0);
		pListCtrl->SetItem(iItem,5,1,pServiceInfo->ServiceInfo.szGameTable,0,0,0,0);
		pListCtrl->SetItem(iItem,6,1,pServiceInfo->ServiceInfo.szDLLFileName,0,0,0,0);
		//pListCtrl->SetItem(iItem,7,1,pServiceInfo->ServiceInfo.szDllNote,0,0,0,0);
		pListCtrl->SetItemData(iItem,(DWORD_PTR)pServiceInfo);
		//pList->SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT,LVS_EX_FULLROWSELECT);
		//pList->InsertColumn(0,TEXT("组件 ID"),LVCFMT_LEFT,60);
		//pList->InsertColumn(1,TEXT("组件名字"),LVCFMT_LEFT,100);
		//pList->InsertColumn(2,TEXT("组件状态"),LVCFMT_LEFT,80);
		//pList->InsertColumn(3,TEXT("版本号码"),LVCFMT_LEFT,60);
		//pList->InsertColumn(4,TEXT("游戏人数"),LVCFMT_LEFT,60);
		//pList->InsertColumn(5,TEXT("默认信息表"),LVCFMT_LEFT,100);
		//pList->InsertColumn(6,TEXT("模块名字"),LVCFMT_LEFT,150);
		sqlMoveNext(hDatabase,hRecord);
	}

    // PengJiLin, 2011-4-21, 清 TWLoginRecord 相关内容,避免崩溃后无法登陆
    sqlCloseRecord(hDatabase, hRecord);
    sqlSPClose(hDatabase, hRecord);

    hRecord=sqlSPSetName(hDatabase,"SP_ClearTWLoginRecord");
    if(hRecord>=(HANDLE)0x1000)
    {
        sqlSPAddPara(hDatabase,hRecord,"@ServiceName",m_ServiceName,m_ServiceName.GetLength());
        sqlSPExec(hDatabase,hRecord);
        sqlCloseRecord(hDatabase, hRecord);
        sqlSPClose(hDatabase, hRecord);
    }

	sqlCloseConnection(hDatabase);

	return true;

}