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); }
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); }
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); }
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); }
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); }
TransactionConnection GetTransactionConnection() { if (_trconnection == null) { _trconnection = CreateTransactionConnection(SafeLevel.None); _trconnection.Open(); } return(_trconnection); }
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(); } }
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); }
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); }
/// <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; }
/// <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(); }
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); }
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); }
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(); } }