コード例 #1
0
ファイル: Pooling.cs プロジェクト: ewin66/Management-System
        public static int OpenDB(string applicationID)
        {
            if (timers.ContainsKey(applicationID))
            {
                timers[applicationID] = false;
            }
            else
            {
                timers.Add(applicationID, false);
            }

            if (ConnectionPool.GetConnection(applicationID).State == System.Data.ConnectionState.Closed) //没开起事务
            {
                try
                {
                    //数据库重新开启连接
                    ConnectionPool.GetConnection(applicationID).Open();
                }
                catch (Exception ex)
                {
                    err = ex.Message;
                    return(-1);
                }
            }
            return(0);
        }
コード例 #2
0
ファイル: Pooling.cs プロジェクト: ewin66/Management-System
        static void timer_Tick(object state)
        {
            long nowTicket = System.DateTime.Now.Ticks;

            //循环Ticks找到各个连接是否应该关闭
            string[] keys = new string[ticks.Count];
            ticks.Keys.CopyTo(keys, 0);
            foreach (string key in keys)
            //foreach (string key in ticks.Keys)
            {
                if (timers[key] == true)
                {
                    long lastCloseTime = ticks[key];
                    if (nowTicket - lastCloseTime > Management.Connection.TimeOutSecond * 10000000)
                    {
                        //数据库关闭连接处理
                        if (ConnectionPool.GetConnection(key).State == System.Data.ConnectionState.Open ||
                            ConnectionPool.GetConnection(key).State == System.Data.ConnectionState.Connecting)
                        {
                            timers[key] = false;
                            ConnectionPool.GetConnection(key).Close();
                        }
                    }
                }
            }
        }
コード例 #3
0
        public void BeginTransaction()
        {
            //数据库重新开启连接
            OpenDB();
            //事务判断
            if (TransactionPool.GetTransaction(this.applicationID) == null)
            {
                TransactionPool.SetTransaction(this.applicationID, ConnectionPool.GetConnection(this.applicationID).BeginTransaction(System.Data.IsolationLevel.ReadCommitted));
                //必须在事务开始之后加上
                //{0A5C1FD6-C6DF-46b1-9EA6-AAD4CA6D12F4}Neusoft.FrameWork.Server.ServerManager  里 把下面方法更新一下,解决DB2事务不能开启的问题
                //ConnectionPool.GetConnection(this.applicationID).GetType().GetProperty("TransactionState", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue(ConnectionPool.GetConnection(this.applicationID), 1, null);

                if (Neusoft.FrameWork.Management.Connection.DBType == Neusoft.FrameWork.Management.Connection.EnumDBType.ORACLE)
                {
                    ConnectionPool.GetConnection(this.applicationID).GetType().GetProperty("TransactionState", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).SetValue(ConnectionPool.GetConnection(this.applicationID), 1, null);
                }
                else if (Neusoft.FrameWork.Management.Connection.DBType == Neusoft.FrameWork.Management.Connection.EnumDBType.DB2)
                {
                    ConnectionPool.GetConnection(this.applicationID).GetType().GetProperty("TransactionState");
                }
            }
        }
コード例 #4
0
 private void setDB(IDBServer db)
 {
     this.db = db;
     this.db.SetConnection(ConnectionPool.GetConnection(this.applicationID), TransactionPool.GetTransaction(this.applicationID));
 }
コード例 #5
0
 /// <summary>
 ///
 /// </summary>
 /// <returns></returns>
 public System.Collections.ArrayList GetSQL()
 {
     System.Collections.ArrayList alAll = new System.Collections.ArrayList();
     if (Neusoft.FrameWork.Management.Connection.Sql == null)
     {
         Neusoft.FrameWork.Management.Connection.Sql = new Neusoft.FrameWork.Management.Sql(ConnectionPool.GetConnection(this.applicationID));
     }
     if (Neusoft.FrameWork.Management.Connection.Sql.alSql == null)
     {
         return(null);
     }
     alAll.Add(Neusoft.FrameWork.Management.Connection.Sql.alSql);
     alAll.Add(Neusoft.FrameWork.Management.Connection.Sql.table_name);
     return(alAll);
 }