Exemple #1
0
        /// <summary>
        /// Commits this instance.
        /// </summary>
        /// <returns></returns>
        public virtual bool Commit()
        {
            bool results;

            try
            {
                GeneralUtility.DebugLog("Transaction started", ToString());
                using (var oTranScope = new TransactionScope(TransactionScopeOption.RequiresNew))
                {
                    if (DbInstance.Length == 0)
                    {
                        DbInstance = ApplicationConfiguration.Instance.DefaultInstance;
                    }
                    GeneralUtility.DebugLog("Execute entered", ToString());
                    var db = new Microsoft.Practices.EnterpriseLibrary.Data.Oracle.OracleDatabase(GeneralUtility.GetConnectStringFromInstance(DbInstance));
                    GeneralUtility.DebugLog("Database created", ToString());

                    results = CommitInserted(db);
                    if (results)
                    {
                        if (CommitUpdated(db))
                        {
                            oTranScope.Complete();
                            GeneralUtility.DebugLog("Transaction complete ", ToString());
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LastError = ex.Message;
                GeneralUtility.LogError(LastError, ToString());
                results = false;
            }
            ClearAll();
            return(results);
        }
 protected override Microsoft.Practices.EnterpriseLibrary.Data.Database CreateDB()
 {
     DEntLib.Database db = new DEntLib.Oracle.OracleDatabase(dbConnectionString);
     return db;
 }
Exemple #3
0
        /// <summary>
        /// Execute stored procedure as defined by derived classes
        /// </summary>
        /// <returns>true if no errors</returns>
        /// <remarks>submits parameters and executes target procedure</remarks>
        /// <exception cref="FormatException"><c>FormatException</c>.</exception>
        public bool Execute()
        {
            try
            {
                GeneralUtility.DebugLog("Execute entered", _name);
                if (_databaseInstance.Length == 0)
                {
                    _databaseInstance = ApplicationConfiguration.Instance.DefaultInstance;
                }

                var db = new OracleDatabase(GeneralUtility.GetConnectStringFromInstance(_databaseInstance));
                GeneralUtility.DebugLog("Database created", _name);
                var cmd = (OracleCommand)db.GetStoredProcCommand(_name);
                if (_alParameters.Count > 0)
                {
                    for (var i = 0; i < _alParameters.Count; i++)
                    {
                        var paramList = (SpParameters)_alParameters[_alParamNames[i]];
                        if (paramList.Direction == ParameterDirection.Input)
                        {
                            if (string.IsNullOrEmpty(paramList.Value))
                            {
                                db.AddInParameter(cmd, paramList.Name, paramList.DataType);
                            }
                            else
                            {
                                try
                                {
                                    switch (paramList.DataType)
                                    {
                                    case DbType.Date:
                                        GeneralUtility.DebugLog("converting date " + paramList.Value, _name);
                                        var myDateParm = Convert.ToDateTime(paramList.Value);
                                        db.AddInParameter(cmd, paramList.Name, paramList.DataType, myDateParm);
                                        break;

                                    case DbType.Int32:
                                        var myInt32Parm = Convert.ToInt32(paramList.Value);
                                        db.AddInParameter(cmd, paramList.Name, paramList.DataType, myInt32Parm);
                                        break;

                                    case DbType.Double:
                                        var myDoubleParm = Convert.ToDouble(paramList.Value);
                                        db.AddInParameter(cmd, paramList.Name, paramList.DataType, myDoubleParm);
                                        break;

                                    case DbType.Byte:
                                        var val = Convert.ToByte(paramList.Value[0]);
                                        db.AddInParameter(cmd, paramList.Name, paramList.DataType, val);
                                        break;

                                    default:
                                        db.AddInParameter(cmd, paramList.Name, paramList.DataType, paramList.Value);
                                        break;
                                    }
                                }
                                catch (FormatException formatException)
                                {
                                    throw new FormatException(string.Format("{0}'s value \"{1}\" is not of type {2}.", paramList.Name, paramList.Value, paramList.DataType), formatException);
                                }
                            }
                        }
                        else
                        {
                            if (paramList.DataType == DbType.Object)
                            {
                                _hasCursor = true;
                                db.AddParameter(cmd, paramList.Name, OracleDbType.RefCursor, 0, ParameterDirection.Output, true, 0, 0, String.Empty, DataRowVersion.Default, Convert.DBNull);
                            }
                            else if (paramList.Direction == ParameterDirection.ReturnValue)
                            {
                                db.AddParameter(cmd, paramList.Name, paramList.DataType, 4000, ParameterDirection.ReturnValue, true, 0, 0, String.Empty, DataRowVersion.Default, Convert.DBNull);
                            }
                            else
                            {
                                db.AddOutParameter(cmd, paramList.Name, paramList.DataType, 4000);
                            }
                        }
                    }
                    if (_hasCursor == false)
                    {
                        GeneralUtility.DebugLog("ExecuteNonQuery -start", _name);
                        db.ExecuteNonQuery(cmd);
                        GeneralUtility.DebugLog("ExecuteNonQuery -finish", _name);

                        for (var i = 0; i < _alParameters.Count; i++)
                        {
                            var paramList = (SpParameters)_alParameters[_alParamNames[i]];
                            if (paramList.Direction != ParameterDirection.Input)
                            {
                                paramList.Value = db.GetParameterValue(cmd, paramList.Name).ToString();
                            }
                        }
                    }
                    else
                    {
                        if (_data != null)
                        {
                            _data.Dispose();
                            _data = null;
                            GeneralUtility.DebugLog("Dataset reset", _name);
                        }
                        GeneralUtility.DebugLog("ExecuteDataSet -start", _name);
                        _data = db.ExecuteDataSet(cmd);
                        GeneralUtility.DebugLog("ExecuteDataSet -finish", _name);
                    }
                }
                return(true);
            }
            catch (Exception ex)
            {
                _lastErrorMessage = ex.Message;
                GeneralUtility.DebugLog(_lastErrorMessage, _name);
                return(false);
            }
        }