/// <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); } }