Esempio n. 1
0
        /// <summary>
        /// Executes and returns an open IRecordSet, which encapsulates an OPEN DATAREADER.  DISPOSE IN FINALLY CLAUSE.
        /// </summary>
        /// <param name="database"></param>
        /// <param name="procedureName"></param>
        /// <param name="parameterMapper"></param>
        /// <returns></returns>
        public static IRecordSet Execute(Database database, string procedureName, ParameterMapper parameterMapper)
        {
            MySqlConnection connection = database.GetConnection();
            MySqlCommand    command    = CommandFactory.CreateParameterMappedCommand(connection, database.InstanceName, procedureName, parameterMapper);

            if (log.IsDebugEnabled)
            {
                log.MethodDebugFormat(LOG_PREFIX, "Database: {0}, Procedure: {1}, Parameters: {2}", database.InstanceName, procedureName, DebugUtil.GetParameterString(command));
            }

            try
            {
                command.Connection.Open();
                IRecordSet record = new DataRecord(command.ExecuteReader(CommandBehavior.CloseConnection));
                return(record);
            }
            catch (Exception exc)
            {
                command.Connection.Close();

                throw new Dongbo.Data.Exceptions.DatabaseExecutionException(database, procedureName, command, exc);
            }
        }