示例#1
0
        internal virtual object ExecuteInsertCommand(IDbCommand dbcommand, IDbCommand indentityCommand, SafeLevel level)
        {
            object result = null;

            using (TransactionConnection transaction = CreateTransactionConnection(level))
            {
                transaction.Open();
                try
                {
                    transaction.SetupCommand(dbcommand);
                    dbcommand.ExecuteNonQuery();
                    if (indentityCommand != null)
                    {
                        transaction.SetupCommand(indentityCommand);
                        object obj = indentityCommand.ExecuteScalar();
                        if (obj != null)
                        {
                            result = obj;
                        }
                    }
                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
            }
            return(result);
        }
示例#2
0
        internal override int ExecuteMultiCommands(IDbCommand[] dbcommands, SafeLevel level)
        {
            int rInt = 0;

            if (_isTransaction)
            {
                foreach (IDbCommand dbcommand in dbcommands)
                {
                    _trconnection.SetupCommand(dbcommand);
                    rInt += dbcommand.ExecuteNonQuery();
                }
            }
            else
            {
                TransactionConnection transaction = GetTransactionConnection();
                transaction.ResetTransaction(level);
                try {
                    foreach (IDbCommand dbcommand in dbcommands)
                    {
                        transaction.SetupCommand(dbcommand);
                        rInt += dbcommand.ExecuteNonQuery();
                    }
                    transaction.Commit();
                }
                catch (Exception ex) {
                    transaction.Rollback();
                    throw ex;
                }
            }
            return(rInt);
        }
示例#3
0
        internal virtual int ExecuteMultiCommands(IDbCommand[] dbcommands, SafeLevel level)
        {
            if (level == SafeLevel.None)
            {
                level = SafeLevel.Default;
            }
            int rInt = 0;

            using (TransactionConnection transaction = CreateTransactionConnection(level))
            {
                transaction.Open();
                try
                {
                    foreach (IDbCommand dbcommand in dbcommands)
                    {
                        transaction.SetupCommand(dbcommand);
                        rInt += dbcommand.ExecuteNonQuery();
                    }
                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
            }
            return(rInt);
        }
示例#4
0
        internal override DataSet QueryDataSet(IDbCommand dbcommand, SafeLevel level)
        {
            DataSet ds = new DataSet();

            if (_isTransaction)
            {
                _trconnection.SetupCommand(dbcommand);
                IDbDataAdapter adapter = _dataBase.CreateDataAdapter(dbcommand);
                adapter.Fill(ds);
            }
            else
            {
                TransactionConnection transaction = GetTransactionConnection();
                transaction.ResetTransaction(level);
                try {
                    transaction.SetupCommand(dbcommand);
                    IDbDataAdapter adapter = _dataBase.CreateDataAdapter(dbcommand);
                    adapter.Fill(ds);
                    transaction.Commit();
                }
                catch (Exception ex) {
                    transaction.Rollback();
                    throw ex;
                }
            }
            return(ds);
        }
示例#5
0
        internal override object ExecuteScalar(IDbCommand dbcommand, SafeLevel level)
        {
            object result = null;

            if (_isTransaction)
            {
                _trconnection.SetupCommand(dbcommand);
                result = dbcommand.ExecuteScalar();
            }
            else
            {
                TransactionConnection transaction = GetTransactionConnection();
                transaction.ResetTransaction(level);
                try {
                    transaction.SetupCommand(dbcommand);
                    result = dbcommand.ExecuteScalar();
                    transaction.Commit();
                }
                catch (Exception ex) {
                    transaction.Rollback();
                    throw ex;
                }
            }
            return(result);
        }
示例#6
0
 TransactionConnection GetTransactionConnection()
 {
     if (_trconnection == null)
     {
         _trconnection = CreateTransactionConnection(SafeLevel.None);
         _trconnection.Open();
     }
     return(_trconnection);
 }
示例#7
0
        internal virtual IEnumerable QueryDataReader(IDataDefine source, IDbCommand dbcommand, Region region, SafeLevel level)
        {
            int start;
            int size;

            if (region != null)
            {
                start = region.Start;
                size  = region.Size;
            }
            else
            {
                start = 0;
                size  = int.MaxValue;
            }
            using (TransactionConnection transaction = CreateTransactionConnection(level))
            {
                transaction.Open();
                transaction.SetupCommand(dbcommand);
                using (IDataReader reader = dbcommand.ExecuteReader())
                {
                    int  index = 0;
                    int  count = 0;
                    bool over  = false;
                    while (reader.Read())
                    {
                        if (over)
                        {
                            dbcommand.Cancel();
                            break;
                        }
                        if (index >= start)
                        {
                            count++;
                            object item = source.LoadData(this, reader);
                            if (count >= size)
                            {
                                over = true;
                            }
                            yield return(item);
                        }
                        index++;
                    }
                }
                transaction.Commit();
            }
        }
示例#8
0
        internal override object ExecuteInsertCommand(IDbCommand dbcommand, IDbCommand indentityCommand, SafeLevel level)
        {
            object result = null;

            if (_isTransaction)
            {
                _trconnection.SetupCommand(dbcommand);
                dbcommand.ExecuteNonQuery();
                if (indentityCommand != null)
                {
                    _trconnection.SetupCommand(indentityCommand);
                    object obj = indentityCommand.ExecuteScalar();
                    if (obj != null)
                    {
                        result = obj;
                    }
                }
            }
            else
            {
                TransactionConnection transaction = GetTransactionConnection();
                transaction.ResetTransaction(level);
                try {
                    transaction.SetupCommand(dbcommand);
                    dbcommand.ExecuteNonQuery();
                    if (indentityCommand != null)
                    {
                        transaction.SetupCommand(indentityCommand);
                        object obj = indentityCommand.ExecuteScalar();
                        if (obj != null)
                        {
                            result = obj;
                        }
                    }
                    transaction.Commit();
                }
                catch (Exception ex) {
                    transaction.Rollback();
                    throw ex;
                }
            }
            return(result);
        }
示例#9
0
        internal virtual int ExecuteNonQuery(IDbCommand dbcommand, SafeLevel level)
        {
            int rInt = 0;

            using (TransactionConnection transaction = CreateTransactionConnection(level))
            {
                transaction.Open();
                try
                {
                    transaction.SetupCommand(dbcommand);
                    rInt = dbcommand.ExecuteNonQuery();
                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
            }
            return(rInt);
        }
示例#10
0
        /// <summary>
        /// protected的Dispose方法,保证不会被外部调用。
        /// </summary>
        /// <param name="disposing">传入bool值disposing以确定是否释放托管资源</param>
        protected void Dispose(bool disposing)
        {
            if (_isDisposed)
            {
                return;
            }

            if (disposing)
            {
                //在这里加入清理"托管资源"的代码
                //DisposeCache();
            }

            // 在这里加入清理"非托管资源"的代码
            if (_trconnection != null)
            {
                _trconnection.Dispose();
                _trconnection = null;
            }
            _isDisposed = true;
        }
示例#11
0
 /// <summary>
 /// 开始事务
 /// </summary>
 public void BeginTrans(SafeLevel level)
 {
     if (_trconnection != null)
     {
         if (_isTransaction)
         {
             _trconnection.Rollback();
         }
         _trconnection.Dispose();
     }
     _isTransaction = true;
     if (level == SafeLevel.None)
     {
         _trconnection = CreateTransactionConnection(SafeLevel.Default);
     }
     else
     {
         _trconnection = CreateTransactionConnection(level);
     }
     _trconnection.Open();
 }
示例#12
0
        internal virtual DataSet QueryDataSet(IDbCommand dbcommand, SafeLevel level)
        {
            DataSet ds = new DataSet();

            using (TransactionConnection transaction = CreateTransactionConnection(level))
            {
                transaction.Open();
                try
                {
                    transaction.SetupCommand(dbcommand);
                    IDbDataAdapter adapter = _dataBase.CreateDataAdapter(dbcommand);
                    adapter.Fill(ds);
                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
            }
            return(ds);
        }
示例#13
0
        internal virtual object ExecuteScalar(IDbCommand dbcommand, SafeLevel level)
        {
            object result = null;

            using (TransactionConnection transaction = CreateTransactionConnection(level))
            {
                transaction.Open();
                try
                {
                    transaction.SetupCommand(dbcommand);
                    result = dbcommand.ExecuteScalar();
                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
            }

            return(result);
        }
示例#14
0
        internal override IEnumerable QueryDataReader(IDataDefine source, IDbCommand dbcommand, Region region, SafeLevel level)
        {
            int start;
            int size;

            if (region != null)
            {
                start = region.Start;
                size  = region.Size;
            }
            else
            {
                start = 0;
                size  = int.MaxValue;
            }
            if (_isTransaction)
            {
                _trconnection.SetupCommand(dbcommand);
                using (IDataReader reader = dbcommand.ExecuteReader()) {
                    int index = 0;
                    int count = 0;
                    while (reader.Read())
                    {
                        if (index >= start)
                        {
                            count++;
                            object item = source.LoadData(this, reader);
                            yield return(item);

                            if (count >= size)
                            {
                                dbcommand.Cancel();
                                break;
                            }
                        }
                        index++;
                    }
                }
            }
            else
            {
                TransactionConnection transaction = GetTransactionConnection();
                transaction.ResetTransaction(level);
                transaction.SetupCommand(dbcommand);
                using (IDataReader reader = dbcommand.ExecuteReader()) {
                    int index = 0;
                    int count = 0;
                    while (reader.Read())
                    {
                        if (index >= start)
                        {
                            count++;
                            object item = source.LoadData(this, reader);
                            yield return(item);

                            if (count >= size)
                            {
                                dbcommand.Cancel();
                                break;
                            }
                        }
                        index++;
                    }
                }
                transaction.Commit();
            }
        }