//加载列表 bool __cdecl CServerListCenter::LoadServerList(tagDataBaseInfo & DataBaseInfo) { //重置列表 ResetServerList(); //创建数据库 CDataBaseHelper ServerInfoDB; if (ServerInfoDB.CreateInstance()==false) return false; try { //转化地址 TCHAR szDataBaseAdr[16]=TEXT(""); BYTE * pcbDataBaseAdr=(BYTE *)&DataBaseInfo.dwDataBaseAddr; _snprintf(szDataBaseAdr,sizeof(szDataBaseAdr),TEXT("%d.%d.%d.%d"),pcbDataBaseAdr[0],pcbDataBaseAdr[1],pcbDataBaseAdr[2],pcbDataBaseAdr[3]); //连接数据库 ServerInfoDB->SetConnectionInfo(szDataBaseAdr,DataBaseInfo.wDataBasePort,DataBaseInfo.szDataBaseName,DataBaseInfo.szDataBaseUser,DataBaseInfo.szDataBasePass); if (ServerInfoDB->OpenConnection()==false) return false; //加载信息 LoadGameType(ServerInfoDB.GetInterface()); LoadGameKind(ServerInfoDB.GetInterface()); LoadGameStation(ServerInfoDB.GetInterface()); return true; } catch (IADOError * pIADOError) { ASSERT(m_pIEventService!=NULL); m_pIEventService->ShowEventNotify(pIADOError->GetErrorDescribe(),Level_Exception); } return false; }
//加载列表 bool __cdecl CServerListCenter::LoadServerList(tagDataBaseInfo & DataBaseInfo) { //重置列表 ResetServerList(); //创建数据库 CDataBaseAide ServerInfoDBAide; CDataBaseHelper ServerInfoDBModule; //创建对象 if (ServerInfoDBModule.CreateInstance()==false) { ASSERT(FALSE); return false; } try { //转化地址 TCHAR szDataBaseAdr[16]=TEXT(""); BYTE * pcbDataBaseAdr=(BYTE *)&DataBaseInfo.dwDataBaseAddr; _snprintf_s(szDataBaseAdr,sizeof(szDataBaseAdr),TEXT("%d.%d.%d.%d"),pcbDataBaseAdr[0],pcbDataBaseAdr[1],pcbDataBaseAdr[2],pcbDataBaseAdr[3]); //连接数据库 ServerInfoDBModule->SetConnectionInfo(szDataBaseAdr,DataBaseInfo.wDataBasePort,DataBaseInfo.szDataBaseName,DataBaseInfo.szDataBaseUser,DataBaseInfo.szDataBasePass); //发起连接 ServerInfoDBModule->OpenConnection(); ServerInfoDBAide.SetDataBase(ServerInfoDBModule.GetInterface()); //加载信息 LoadGameType(ServerInfoDBAide); LoadGameKind(ServerInfoDBAide); LoadGameStation(ServerInfoDBAide); return true; } catch (IDataBaseException * pIException) { //错误信息 LPCTSTR pszDescribe=pIException->GetExceptionDescribe(); CTraceService::TraceString(pszDescribe,TraceLevel_Exception); return false; } return false; }
//连接数据 bool CServerInfoManager::ConnectPlatformDB(CDataBaseHelper & PlatformDBModule) { //获取参数 CModuleDBParameter * pModuleDBParameter=CModuleDBParameter::GetModuleDBParameter(); tagDataBaseParameter * pDataBaseParameter=pModuleDBParameter->GetPlatformDBParameter(); //创建对象 if ((PlatformDBModule.GetInterface()==NULL)&&(PlatformDBModule.CreateInstance()==false)) { AfxMessageBox(TEXT("CreateGameServer 创建 PlatformDBModule 对象失败"),MB_ICONERROR); return false; } //设置连接 PlatformDBModule->SetConnectionInfo(pDataBaseParameter->szDataBaseAddr,pDataBaseParameter->wDataBasePort, pDataBaseParameter->szDataBaseName,pDataBaseParameter->szDataBaseUser,pDataBaseParameter->szDataBasePass); //发起连接 PlatformDBModule->OpenConnection(); return true; }
//连接信息 bool CServiceUnits::LoadDataBaseParameter(LPCTSTR pszDataBaseAddr, LPCTSTR pszDataBaseName, tagDataBaseParameter & DataBaseParameter) { //变量定义 CDataBaseAide PlatformDBAide; CDataBaseHelper PlatformDBModule; //创建对象 if ((PlatformDBModule.GetInterface()==NULL)&&(PlatformDBModule.CreateInstance()==false)) { ASSERT(FALSE); return false; } //变量定义 tagDataBaseParameter * pPlatformDBParameter=&m_InitParameter.m_PlatformDBParameter; //设置连接 PlatformDBModule->SetConnectionInfo(pPlatformDBParameter->szDataBaseAddr,pPlatformDBParameter->wDataBasePort, pPlatformDBParameter->szDataBaseName,pPlatformDBParameter->szDataBaseUser,pPlatformDBParameter->szDataBasePass); //获取信息 try { //发起连接 PlatformDBModule->OpenConnection(); PlatformDBAide.SetDataBase(PlatformDBModule.GetInterface()); //连接信息 PlatformDBAide.ResetParameter(); PlatformDBAide.AddParameter(TEXT("@strDataBaseAddr"),pszDataBaseAddr); //执行查询 if (PlatformDBAide.ExecuteProcess(TEXT("GSP_GS_LoadDataBaseInfo"),true)!=DB_SUCCESS) { //构造信息 TCHAR szErrorDescribe[128]=TEXT(""); PlatformDBAide.GetValue_String(TEXT("ErrorDescribe"),szErrorDescribe,CountArray(szErrorDescribe)); //提示消息 CTraceService::TraceString(szErrorDescribe,TraceLevel_Exception); return false; } //读取密文 TCHAR szDBUserRead[512]=TEXT(""),szDBPassRead[512]=TEXT(""); PlatformDBAide.GetValue_String(TEXT("DBUser"),szDBUserRead,CountArray(szDBUserRead)); PlatformDBAide.GetValue_String(TEXT("DBPassword"),szDBPassRead,CountArray(szDBPassRead)); //获取信息 DataBaseParameter.wDataBasePort=PlatformDBAide.GetValue_WORD(TEXT("DBPort")); lstrcpyn(DataBaseParameter.szDataBaseAddr,pszDataBaseAddr,CountArray(DataBaseParameter.szDataBaseAddr)); lstrcpyn(DataBaseParameter.szDataBaseName,pszDataBaseName,CountArray(DataBaseParameter.szDataBaseName)); //解密密文 TCHAR szDataBaseUser[32]=TEXT(""),szDataBasePass[32]=TEXT(""); CWHEncrypt::XorCrevasse(szDBUserRead,DataBaseParameter.szDataBaseUser,CountArray(DataBaseParameter.szDataBaseUser)); CWHEncrypt::XorCrevasse(szDBPassRead,DataBaseParameter.szDataBasePass,CountArray(DataBaseParameter.szDataBasePass)); } catch (IDataBaseException * pIException) { //错误信息 LPCTSTR pszDescribe=pIException->GetExceptionDescribe(); CTraceService::TraceString(pszDescribe,TraceLevel_Exception); return false; } return true; }
//获取密码 const tagDBConnectInfo * CServiceLoaderDlg::GetDBConnectInfo(DWORD dwDataBaseAddr) { //寻找现存 tagDBConnectInfo * pDBConnectInfo=NULL; for (INT_PTR i=0;i<m_DBConnectInfoArray.GetCount();i++) { pDBConnectInfo=&m_DBConnectInfoArray[i]; if (pDBConnectInfo->dwDataBaseAddr==dwDataBaseAddr) return pDBConnectInfo; } //创建数据库 CDataBaseAide ServerInfoAide; CDataBaseHelper ServerInfoDB; if (ServerInfoDB.CreateInstance()==false) { ShowErrorMessasge(TEXT("数据库组件创建失败,无法获取数据库信息"),TraceLevel_Exception); return NULL; } try { //连接数据库 ServerInfoDB->SetConnectionInfo(m_InitParamter.m_szServerInfoDBAddr,m_InitParamter.m_wServerInfoDBPort, m_InitParamter.m_szServerInfoDBName,m_InitParamter.m_szServerInfoDBUser,m_InitParamter.m_szServerInfoDBPass); //打开连接 ServerInfoDB->OpenConnection(); ServerInfoAide.SetDataBase(ServerInfoDB.GetInterface()); //转化地址 TCHAR szDataBaseAdr[16]=TEXT(""); BYTE * pcbDataBaseAdr=(BYTE *)&dwDataBaseAddr; _snprintf(szDataBaseAdr,sizeof(szDataBaseAdr),TEXT("%d.%d.%d.%d"),pcbDataBaseAdr[0],pcbDataBaseAdr[1],pcbDataBaseAdr[2],pcbDataBaseAdr[3]); //执行查询 ServerInfoAide.ResetParameter(); ServerInfoAide.AddParameter(TEXT("@strDataBaseAddr"),szDataBaseAdr); LONG lReturnCode=ServerInfoAide.ExecuteProcess(TEXT("GSP_LoadDataBaseInfo"),true); //结果判断 if (lReturnCode!=0L) { TCHAR szErrorDescribe[256]=TEXT(""); ServerInfoAide.GetValue_String(TEXT("ErrorDescribe"),szErrorDescribe,CountArray(szErrorDescribe)); ShowErrorMessasge(szErrorDescribe,TraceLevel_Exception); return NULL; } //获取信息 tagDBConnectInfo DBConnectInfo; memset(&DBConnectInfo,0,sizeof(DBConnectInfo)); TCHAR szDBUser[512]=TEXT(""),szDBPass[512]=TEXT(""),szDBAddr[16]=TEXT(""); ServerInfoAide.GetValue_String(TEXT("DBAddr"),szDBAddr,sizeof(szDBAddr)); ServerInfoAide.GetValue_String(TEXT("DBUser"),szDBUser,sizeof(szDBUser)); DBConnectInfo.wDataBasePort=ServerInfoAide.GetValue_WORD(TEXT("DBPort")); ServerInfoAide.GetValue_String(TEXT("DBPassword"),szDBPass,sizeof(szDBPass)); CXOREncrypt::CrevasseData(szDBUser,DBConnectInfo.szDataBaseUser,sizeof(DBConnectInfo.szDataBaseUser)); CXOREncrypt::CrevasseData(szDBPass,DBConnectInfo.szDataBasePass,sizeof(DBConnectInfo.szDataBasePass)); //保存信息 DBConnectInfo.dwDataBaseAddr=dwDataBaseAddr; INT_PTR nIndex=m_DBConnectInfoArray.Add(DBConnectInfo); return &m_DBConnectInfoArray[nIndex]; } catch (IDataBaseException * pIException) { //输出错误 LPCTSTR pszDescribe=pIException->GetExceptionDescribe(); CTraceService::TraceString(pszDescribe,TraceLevel_Exception); } return NULL; }