예제 #1
0
        public OracleDataStoreException(OracleException ex, OracleCommand cmd)
            : base("", ex)
        {
            StringBuilder sb = new StringBuilder();

            if (ex.Number == 24381)
            {
                // error(s) in array DML
                // See http://docs.oracle.com/html/B14164_01/featOraCommand.htm
                foreach (var error in ex.Errors.OfType <OracleError>())
                {
                    sb.AppendFormat("Array Bind Error {0} occured at Row Number {1}", error.Message, error.ArrayBindIndex);
                    sb.AppendLine();
                }
            }
            else
            {
                foreach (var error in ex.Errors.OfType <OracleError>())
                {
                    sb.AppendLine(error.Message);
                }
            }
#if DEBUG
            if (cmd != null)
            {
                sb.AppendLine("Additional Debug Mode Information");
                sb.AppendLine(cmd.CommandText);
                foreach (OracleParameter param in cmd.Parameters)
                {
                    sb.AppendFormat("{0} ({1} {2}: *{3}*)", param.ParameterName, param.Direction, param.OracleDbType, param.Value);
                    sb.AppendLine();
                }
            }
#endif

            _message = sb.ToString();

            var ev = new OracleDataStoreErrorEvent("OracleDataStoreException is being raised", cmd, this);
            ev.Raise();
        }
        public OracleDataStoreException(OracleException ex, OracleCommand cmd)
            : base("", ex)
        {
            StringBuilder sb = new StringBuilder();
            if (ex.Number == 24381)
            {
                // error(s) in array DML
                // See http://docs.oracle.com/html/B14164_01/featOraCommand.htm
                foreach (var error in ex.Errors.OfType<OracleError>())
                {
                    sb.AppendFormat("Array Bind Error {0} occured at Row Number {1}", error.Message, error.ArrayBindIndex);
                    sb.AppendLine();
                }
            }
            else
            {
                foreach (var error in ex.Errors.OfType<OracleError>())
                {
                    sb.AppendLine(error.Message);
                }
            }
            #if DEBUG
            if (cmd != null)
            {
                sb.AppendLine("Additional Debug Mode Information");
                sb.AppendLine(cmd.CommandText);
                foreach (OracleParameter param in cmd.Parameters)
                {
                    sb.AppendFormat("{0} ({1} {2}: *{3}*)", param.ParameterName, param.Direction, param.OracleDbType, param.Value);
                    sb.AppendLine();
                }
            }
            #endif

            _message = sb.ToString();

            var ev = new OracleDataStoreErrorEvent("OracleDataStoreException is being raised", cmd, this);
            ev.Raise();
        }