Ejemplo n.º 1
0
        /// <summary>
        ///     Funcion para ejecutar un Store Procedure que devuelva un resultado
        /// </summary>
        /// <param name="cadenaConexion">Cadena de conexion a la base de datos donde se desea ejecutar el Store Procedure</param>
        /// <returns>Datatable no tipado</returns>
        public DataTable MakeQuery(string cadenaConexion)
        {
            var consulta = new DataTable();

            if (cadenaConexion.Length > 0)
            {
                var conexion = new SqlConnection(cadenaConexion);
                var comando  = new SqlDataAdapter(nameSp, conexion);
                comando.SelectCommand.CommandType    = CommandType.StoredProcedure;
                comando.SelectCommand.CommandTimeout = 600000;
                for (int cont = 0; cont < listParameters.Count; cont++)
                {
                    if (listParameters[cont].Value == null)
                    {
                        comando.SelectCommand.Parameters.AddWithValue(listParameters[cont].Name, DBNull.Value);
                    }
                    else
                    {
                        var parameter = new SqlParameter(listParameters[cont].Name, listParameters[cont].Value);
                        switch (listParameters[cont].Direction)
                        {
                        case DirectionValues.Input:
                            parameter.Direction = ParameterDirection.Input;
                            break;

                        case DirectionValues.Ouput:
                            parameter.Direction = ParameterDirection.Output;
                            parameter.Size      = Int32.MaxValue;
                            break;

                        case DirectionValues.InputOuput:
                            parameter.Direction = ParameterDirection.InputOutput;
                            parameter.Size      = Int32.MaxValue;
                            break;
                        }
                        comando.SelectCommand.Parameters.Add(parameter);
                    }
                }
                try
                {
                    conexion.Open();
                    comando.Fill(consulta);
                    errorMessage = String.Empty;
                }
                catch (SqlException error)
                {
                    errorMessage = error.Message;
                }
                finally
                {
                    conexion.Close();
                    //Limpieza de los pool de conexion, para depurar cualquier conexion que no se cerro
                    SqlConnection.ClearAllPools();
                }
            }
            else
            {
                errorMessage = "No se recibio la cadena de conexion";
            }
            return(consulta);
        }
Ejemplo n.º 2
0
        /// <summary>
        ///     Funcion para ejecutar el Store Procedure de Insert, Update, Delete
        /// </summary>
        /// <param name="cadenaConexion">Cadena de conexion a la base de datos donde se desea ejecutar el Store Procedure</param>
        /// <returns>Indicador booleano del resultado de la ejecucion</returns>
        public Boolean ExecuteStoredProcedure(string cadenaConexion)
        {
            var conexion = new SqlConnection(cadenaConexion);
            var comando  = new SqlCommand(nameSp, conexion);

            //Se indica que es del tipo StoreProcedure
            comando.CommandType    = CommandType.StoredProcedure;
            comando.CommandTimeout = 600000;
            //Se declaran los parametros en el SQLCommand
            for (int cont = 0; cont < listParameters.Count; cont++)
            {
                if (listParameters[cont].Value == null)
                {
                    comando.Parameters.AddWithValue(listParameters[cont].Name, DBNull.Value);
                }
                else
                {
                    var parameter = new SqlParameter(listParameters[cont].Name, listParameters[cont].Value);
                    switch (listParameters[cont].Direction)
                    {
                    case DirectionValues.Input:
                        parameter.Direction = ParameterDirection.Input;
                        break;

                    case DirectionValues.Ouput:
                        parameter.Direction = ParameterDirection.Output;
                        parameter.Size      = Int32.MaxValue;
                        break;

                    case DirectionValues.InputOuput:
                        parameter.Direction = ParameterDirection.InputOutput;
                        parameter.Size      = Int32.MaxValue;
                        break;
                    }
                    comando.Parameters.Add(parameter);
                }
            }
            try
            {
                //Se habre la conexion
                conexion.Open();
                //se ejecuta el query
                comando.ExecuteNonQuery();
                //Se cierra la conexion
                conexion.Close();
                //Si no ha habido errores se guarda en la variable MensajeError una cadena vacia
                errorMessage = String.Empty;
                //Limpieza de los pool de conexion, para depurar cualquier conexion que no se cerro
                SqlConnection.ClearAllPools();
                for (int i = 0; i < listParameters.Count; i++)
                {
                    if (listParameters[i].Direction == DirectionValues.Ouput)
                    {
                        listParameters[i].Value = comando.Parameters[listParameters[i].Name].Value;
                    }
                }

                //Se Retorna true indicando que se ejecuto el proceso
                return(true);
            }
            catch (SqlException error)
            {
                //Se guarda en la variable MensajeError el error q' se produjo
                errorMessage = error.Message;
                //Se cierra la conexion
                conexion.Close();
                SqlConnection.ClearAllPools();
                //Se Retorna falso en caso de que no se haya ejecutado el proceso
                return(false);
            }
        }