/// <summary>
        /// Agrega o actualiza filas en DataTable.
        /// </summary>
        /// <param name="table">Clase DataTable que se va a rellenar con registros.</param>
        /// <param name="commandType">Tipo de comando</param>
        /// <param name="commandText">Consulta SQL a ejecutar</param>
        /// <param name="parameters">Establece los parametros que se va usar en la consulta.</param>
        public void FillDataTable(DataTable table, CommandType commandType, string commandText, params object[] parameters)
        {
            UniversalConnectorDal.CleanParameters();
            UniversalConnectorDal.CreateParameters(parameters);

            UniversalConnectorDal.Open();
            UniversalConnectorDal.FillDataTable(ref table, commandType, commandText);
        }
        /// <summary>
        /// Ejecuta CommandText en Connection y devuelve un objeto DbDataReader.
        /// </summary>
        /// <param name="commandType">Especifica cómo se interpreta una cadena de comando.</param>
        /// <param name="commandText">Establece el comando de texto que se debe ejecutar en el origen de datos.</param>
        /// <param name="parameters">Establece los parametros que se va usar en la consulta.</param>
        public void ExecuteReader(CommandType commandType, string commandText, params object[] parameters)
        {
            UniversalConnectorDal.CleanParameters();
            UniversalConnectorDal.CreateParameters(parameters);

            UniversalConnectorDal.Open();
            UniversalConnectorDal.ExecuteReader(commandType, commandText);
        }
        /// <summary>
        /// Ejecuta una instrucción SQL en un objeto de conexión.
        /// </summary>
        /// <param name="commandType">Especifica cómo se interpreta una cadena de comando.</param>
        /// <param name="commandText">Establece el comando de texto que se debe ejecutar en el origen de datos.</param>
        /// <param name="parameters">Establece los parametros que se va usar en la consulta.</param>
        /// <returns>Número de filas afectadas.</returns>
        public int ExecuteNonQuery(CommandType commandType, string commandText, params object[] parameters)
        {
            UniversalConnectorDal.CleanParameters();
            UniversalConnectorDal.CreateParameters(parameters);

            UniversalConnectorDal.Open();
            return(UniversalConnectorDal.ExecuteNonQuery(commandType, commandText));
        }
        /// <summary>
        /// Ejecuta la consulta y devuelve un conjunto de resultados.
        /// </summary>
        /// <param name="commandType">Especifica cómo se interpreta una cadena de comando.</param>
        /// <param name="commandText">Establece el comando de texto que se debe ejecutar en el origen de datos.</param>
        /// <param name="parameters">Establece los parametros que se va usar en la consulta.</param>
        /// <returns>Un objeto DataTable.</returns>
        public DataTable ExecuteDataTable(CommandType commandType, string commandText, params object[] parameters)
        {
            UniversalConnectorDal.CleanParameters();
            UniversalConnectorDal.CreateParameters(parameters);

            UniversalConnectorDal.Open();
            return(UniversalConnectorDal.ExecuteDataTable(commandType, commandText));
        }
        /// <summary>
        /// Agrega filas en un intervalo especificado de DataTable.
        /// NOTA: La consulta SQL se genera automaticamente.
        /// Si estable parametros deben conincidir con llaves primarias del objeto DataTable
        /// </summary>
        /// <param name="dataTable">Nombre de DataTable que se va a utilizar para la asignación de tabla. </param>
        /// <param name="parameters">Establece los parametros que se va usar en la consulta.</param>
        public void AutomaticFill(DataTable dataTable, params object[] parameters)
        {
            dataTable.Clear();
            UniversalConnectorDal.CleanParameters();

            string selectCmd = string.Empty;

            if (parameters.Length == 0)
            {
                selectCmd = SqlStatementsFactory.SelectCommand(dataTable);
            }

            else
            {
                selectCmd = SqlStatementsFactory.SelectCommand(dataTable, true);
                UniversalConnectorDal.CreateParameters(parameters);
            }

            UniversalConnectorDal.Open();
            UniversalConnectorDal.FillDataTable(ref dataTable, CommandType.Text, selectCmd);
        }
 /// <summary>
 /// Actualiza los valores de la base de datos ejecutando las instrucciones
 /// INSERT, UPDATE o DELETE respectivas para cada fila insertada,
 /// actualizada o eliminada en los objetos DataTable especificados.
 /// </summary>
 /// <param name="dataTable">Objeto DataTable que se utiliza para actualizar el origen de datos. </param>
 /// <returns>Número de filas del DataTable actualizadas correctamente.</returns>
 public int ExecuteBatch(DataTable dataTable)
 {
     UniversalConnectorDal.CleanParameters();
     UniversalConnectorDal.Open();
     return(UniversalConnectorDal.ExecuteBatch(dataTable, SqlStatementsFactory.SelectCommand(dataTable)));
 }