Exemplo n.º 1
0
        /// <summary>
        /// 初始化DB连接
        /// </summary>
        /// <param name="dbConnFlag"></param>
        /// <param name="ip"></param>
        /// <param name="port"></param>
        /// <param name="name"></param>
        /// <param name="user"></param>
        /// <param name="passwrod"></param>
        /// <returns></returns>
        public bool InitDBConnection(eDbConnFlag dbConnFlag, string ip, int port, string name, string user, string passwrod)
        {
            //配置载入
            try
            {
                int errCode = DbAccess.Instance.InitilizeDbConn(dbConnFlag, "mysql", ip, port.ToString(), name, user, passwrod, 0);
                if (errCode != 0)
                {
                    return(false);
                }
            }
            catch (Exception ex)
            {
                SvLogger.Fatal(ex, "Connect MySql DataBase Fail: ErrMsg={0}, Stack={1}.", ex.Message, ex.StackTrace);
                return(false);
            }

            return(true);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 获取数据库主访问池
        /// </summary>
        /// <param name="dbConnFlag">数据库类型</param>
        /// <returns>数据库访问池</returns>
        public DbAccessPool GetDBMainPool(eDbConnFlag dbConnFlag, int searchFlag = 0)
        {
            switch (dbConnFlag)
            {
            case eDbConnFlag.Game:
                if (searchFlag == 0 && m_gameDBMainConnFlagList.Count > 0)
                {
                    return(DbAccessPool.GetPool(m_gameDBMainConnFlagList[0]));
                }
                foreach (int gameFlag in m_gameDBMainConnFlagList)
                {
                    if (gameFlag == searchFlag)
                    {
                        return(DbAccessPool.GetPool(searchFlag));
                    }
                }
                return(null);

            case eDbConnFlag.Log:
                return(m_logDbAccPool);

            case eDbConnFlag.Secd:
                return(m_secdDbAccPool);

            case eDbConnFlag.GM:
                return(m_gmDBAccPool);

            case eDbConnFlag.Platform:
                return(m_platformDBAccPool);

            case eDbConnFlag.Moniteor:
                return(m_moniteorDBAccPool);

            case eDbConnFlag.Entry:
                return(m_entryDBAccPool);

            case eDbConnFlag.GiftCode:
                return(m_giftCodeDBAccPool);
            }
            return(null);
        }
Exemplo n.º 3
0
        /// <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);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 初始化连接
        /// </summary>
        /// <returns>是否成功</returns>
        public bool InitDBConnections()
        {
            //配置载入
            XmlDocument doc = new XmlDocument();

            try
            {
                doc.Load(@"Config\DatabaseCfg.xml");

                XmlNode root = doc.SelectSingleNode("XmlAppConfig");
                if (root == null)
                {
                    return(false);
                }
                else
                {
                    XmlNodeList dbNodeList = root.SelectNodes("DBItem");
                    foreach (XmlNode dbNode in dbNodeList)
                    {
                        eDbConnFlag connFlag   = eDbConnFlag.None;
                        string      dbTypeName = dbNode.Attributes["name"].Value;
                        switch (dbTypeName)
                        {
                        case "GameDB":
                            connFlag = eDbConnFlag.Game;
                            break;

                        case "LogDB":
                            connFlag = eDbConnFlag.Log;
                            break;

                        case "SecdDB":
                            connFlag = eDbConnFlag.Secd;
                            break;

                        case "GMDB":
                            connFlag = eDbConnFlag.GM;
                            break;
                        }
                        if (connFlag != eDbConnFlag.None)
                        {
                            string      dbType = "", serverIP = "", serverPort = "", databaseName = "", userName = "", UserPass = "", childConnCount = "";
                            XmlNodeList cfgNodeList = dbNode.SelectNodes("config");
                            foreach (XmlNode cfgNode in cfgNodeList)
                            {
                                switch (cfgNode.Attributes["key"].Value)
                                {
                                case "DbType":
                                    dbType = cfgNode.Attributes["value"].Value;
                                    break;

                                case "ServerIP":
                                    serverIP = cfgNode.Attributes["value"].Value;
                                    break;

                                case "ServerPort":
                                    serverPort = cfgNode.Attributes["value"].Value;
                                    break;

                                case "DatabaseName":
                                    databaseName = cfgNode.Attributes["value"].Value;
                                    break;

                                case "UserName":
                                    userName = cfgNode.Attributes["value"].Value;
                                    break;

                                case "UserPass":
                                    UserPass = cfgNode.Attributes["value"].Value;
                                    break;

                                case "ChildConnCount":
                                    childConnCount = cfgNode.Attributes["value"].Value;
                                    break;
                                }
                            }
                            int errCode = DbAccess.Instance.InitilizeDbConn(connFlag, dbType, serverIP, serverPort, databaseName, userName, UserPass, Convert.ToInt32(childConnCount));
                            if (errCode != 0)
                            {
                                return(false);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                SvLogger.Fatal(ex, "Load Fail Fatal: ErrMsg={0}, Stack={1}.", ex.Message, ex.StackTrace);
                return(false);
            }

            return(true);
        }