Exemplo n.º 1
0
 internal bool OpenCon(ConnBean cb)
 {
     try
     {
         if (!isOpenTrans && cb != null && isAllowResetConn && connObject.IsAllowSlave())
         {
             ResetConn(cb);
         }
         Open();
         if (IsAllowRecordSql)
         {
             _watch.Start();
         }
         return(true);
     }
     catch (DbException err)
     {
         if (cb == null && connObject.BackUp != null)
         {
             connObject.InterChange();
             return(OpenCon(connObject.BackUp));
             //if (OpenConBak())
             //{
             //    return true;
             //}
         }
         else
         {
             WriteError("OpenCon():" + err.Message);
         }
     }
     return(false);
 }
Exemplo n.º 2
0
 /// <summary>
 /// 打开链接,允许切从。
 /// </summary>
 internal bool OpenCon(ConnBean cb, AllowConnLevel leve)
 {
     try
     {
         if (cb == null)
         {
             cb = useConnBean;
             if (isOpenTrans && cb.IsSlave)
             {
                 ResetConn(connObject.Master);
             }
         }
         if (!cb.IsOK)
         {
             if ((int)leve > 1 && connObject.BackUp != null && connObject.BackUp.IsOK)
             {
                 ResetConn(connObject.BackUp); //重置链接。
                 connObject.InterChange();     //主从换位置
                 return(OpenCon(connObject.Master, leve));
             }
             else if ((int)leve > 2)
             {
                 //主挂了,备也挂了(因为备会替主)
                 ConnBean nextSlaveBean = connObject.GetSlave();
                 if (nextSlaveBean != null)
                 {
                     ResetConn(nextSlaveBean);//重置链接。
                     return(OpenCon(nextSlaveBean, leve));
                 }
             }
         }
         else if (!isOpenTrans && cb != useConnBean && isAllowResetConn && connObject.IsAllowSlave())
         {
             ResetConn(cb);//,_IsAllowRecordSql只有读数据错误才切,表结构错误不切?
         }
         if (useConnBean.IsOK)
         {
             Open();//异常抛
         }
         else
         {
             WriteError("OpenCon():" + useConnBean.ErrorMsg);
         }
         if (IsAllowRecordSql)
         {
             _watch.Start();
         }
         return(useConnBean.IsOK);
     }
     catch (DbException err)
     {
         useConnBean.IsOK     = false;
         useConnBean.ErrorMsg = err.Message;
         return(OpenCon(null, leve));
     }
 }