/// <summary> /// 初始化数据库连接 /// </summary> /// <param name="dbConnFlag">连接名</param> /// <param name="serverType">数据库类型</param> /// <param name="serverIp">数据库服务器名</param> /// <param name="serverPort">数据库端口</param> /// <param name="databaseName">数据库名</param> /// <param name="userName">数据库用户名</param> /// <param name="userPass">数据库用户密码</param> /// <param name="childConnCount">子连接个数</param> /// <returns>返回错误信息</returns> public int InitilizeDbConn(eDbConnFlag dbConnFlag, string serverType, string serverIp, string serverPort, string databaseName, string userName, string userPass, int childConnCount) { int errCode = 0; //最终Connect Flag生成 m_connFlagMakeLines[dbConnFlag] += 1; int lineIndex = Convert.ToInt32(m_connFlagMakeLines[dbConnFlag]); int connFlag = Convert.ToInt32(dbConnFlag) | lineIndex; DbAccessPool dapool = DbAccessPool.GetPool(connFlag); if (dapool != null) { errCode = 1111; SvLogger.Error("Had Same DB Connections : ConnectType={0}, ConnectFlag={1}.", dbConnFlag, connFlag); return(errCode); } //获取SQL日志记录池 DbAccessPool sqlogdapool = null; //if (dbConnFlag != eDbConnFlag.SqlLog) // sqlogdapool = DbAccessPool.GetPool(EnumDbConnName.SqlLog.ToString()); //建立数据库连接 DbAccessPoolVistor vistor = new DbAccessPoolVistor(connFlag); dapool = new DbAccessPool(connFlag, SvLogger.GetLogger(), vistor, sqlogdapool); try { dapool.Start(serverType, serverIp, serverPort, databaseName, userName, userPass); } catch (Exception ex) { SvLogger.Fatal(ex, "{0}\n{1}.", ex.Message, ex.StackTrace); errCode = 1111; return(errCode); } int mainFlag = dapool.Flag; if (dbConnFlag == eDbConnFlag.Game) { m_gameDBMainConnFlagList.Add(dapool.Flag); } else if (dbConnFlag == eDbConnFlag.Log) { m_logDbAccPool = dapool; } else if (dbConnFlag == eDbConnFlag.Secd) { m_secdDbAccPool = dapool; } else if (dbConnFlag == eDbConnFlag.GM) { m_gmDBAccPool = dapool; } else if (dbConnFlag == eDbConnFlag.Platform) { m_platformDBAccPool = dapool; } else if (dbConnFlag == eDbConnFlag.Moniteor) { m_moniteorDBAccPool = dapool; } else if (dbConnFlag == eDbConnFlag.Entry) { m_entryDBAccPool = dapool; } else if (dbConnFlag == eDbConnFlag.GiftCode) { m_giftCodeDBAccPool = dapool; } //加入池 DbAccessPool.AddPool(dapool); //Game数据库子连接建立 if (dbConnFlag == eDbConnFlag.Game) { for (int i = 0; i < childConnCount; ++i) { //最终Connect Flag生成 m_connFlagMakeLines[dbConnFlag] += 1; lineIndex = Convert.ToInt32(m_connFlagMakeLines[dbConnFlag]); connFlag = Convert.ToInt32(dbConnFlag) | lineIndex; dapool = DbAccessPool.GetPool(connFlag); if (dapool != null) { errCode = 1111; SvLogger.Error("Had Same DB Connections : ConnectType={0}, ConnectFlag={1}.", dbConnFlag, connFlag); return(errCode); } //获取SQL日志记录池 sqlogdapool = null; //if (dbConnFlag != eDbConnFlag.SqlLog) // sqlogdapool = DbAccessPool.GetPool(EnumDbConnName.SqlLog.ToString()); //建立数据库连接 vistor = new DbAccessPoolVistor(connFlag); dapool = new DbAccessPool(connFlag, SvLogger.GetLogger(), vistor, sqlogdapool); try { dapool.Start(serverType, serverIp, serverPort, databaseName, userName, userPass); } catch (Exception ex) { SvLogger.Fatal(ex, "{0}\n{1}.", ex.Message, ex.StackTrace); errCode = 1111; return(errCode); } List <int> childList; if (m_gameDBChildConnFlagDic.TryGetValue(mainFlag, out childList) == false) { childList = new List <int>(); m_gameDBChildConnFlagDic.Add(mainFlag, childList); } childList.Add(dapool.Flag); //加入池 DbAccessPool.AddPool(dapool); } } return(errCode); }