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); }
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(); } } } } }
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"); } } }
private void setDB(IDBServer db) { this.db = db; this.db.SetConnection(ConnectionPool.GetConnection(this.applicationID), TransactionPool.GetTransaction(this.applicationID)); }
/// <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); }