FOROS DE INFORMATICA
Noticias: Habilitada la opción de Karma para usuarios con más de 50 mensajes
 
*
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?
Marzo 28, 2024, 09:09:45


Ingresar con nombre de usuario, contraseña y duración de la sesión


Páginas: [1]
  Imprimir  
Autor Tema: Utilidades  (Leído 18474 veces)
Etereo
Global Moderator
Habitante
*****

Karma:9
Desconectado Desconectado

Mensajes: 2374



« : Mayo 15, 2007, 08:32:22 »

En este post voy a ir subiendo utilidades sobre .NET. Espero que os sirva de ayuda.

Un saludo
En línea

Etereo
Global Moderator
Habitante
*****

Karma:9
Desconectado Desconectado

Mensajes: 2374



« Respuesta #1 : Mayo 15, 2007, 08:35:59 »

public class DataEl
    {
        private Database db = null;
        private DbTransaction _transaccion = null;
        private DbConnection _conexion = null;

        //Constructor de la Clase
        public DataEl()
        {
            db = DatabaseFactory.CreateDatabase();
        }

        /// <summary>
        /// Este métedo devuelve los datos de una BBDD
        /// </summary>
        /// <param name="dataBase">Nombre de la BBDD que vamos a utilizar</param>
        /// <returns>Debuelve una DataTable con los datos seleccionados</returns>

        public DataTable GetDatosSQL(string sql)
        {
            DataTable dt;
            try
            {               
                SqlCommand command = (SqlCommand)db.GetSqlStringCommand(sql);
                DataSet dataset = null;

                if (_transaccion != null)
                {
                    dataset = db.ExecuteDataSet(command,_transaccion);
                }
                else
                {
                    dataset = db.ExecuteDataSet(command);
                }

                dt = dataset.Tables[0];
            }
            catch
            {               
                dt = null;
            }
            return dt;
        }

        /// <summary>
        /// Este método devuelve los datos de una BBDD ejecutando un procedimiento almacenado con parametros
        /// </summary>
        /// <param name="procedure">nombre del procedimiento</param>
        /// <param name="parametros">parametros que recibe el procedimiento (tanto de entrada como de salida)</param>
        /// <param name="dataBase">Nombre de la base de datos sobre la que ejecutaremos el procedimiento</param>
        /// <returns>Debuelve una DataTable con los datos seleccionados</returns>


        public DataTable GetDatosProcedure(string procedure,params object[] parametros)
        {

            DataTable dt = null;
            try
            {               
                DbCommand command = (SqlCommand)db.GetStoredProcCommand(procedure, parametros);


                DataSet dataset = null;

                if (_transaccion != null)
                {
                    dataset = db.ExecuteDataSet(command,_transaccion);
                }
                else
                {
                    dataset = db.ExecuteDataSet(command);
                }


                dt = dataset.Tables[0];
            }
            catch
            {
                dt = null;
            }
            return dt;
        }

        /// <summary>
        /// Este método devuelve los datos de una BBDD ejecutando un procedimiento almacenado sin parametros
        /// </summary>
        /// <param name="procedure">nombre del procedimiento</param>
        /// <param name="dataBase">Nombre de la base de datos sobre la que ejecutaremos el procedimiento</param>
        /// <returns>Debuelve una DataTable con los datos seleccionados</returns>


        public DataTable GetDatosProcedure(string procedure)
        {

            DataTable dt = null;
            try
            {               
                DbCommand command = db.GetStoredProcCommand(procedure);

                DataSet dataset = null;

                if (_transaccion != null)
                {
                    dataset = db.ExecuteDataSet(command, _transaccion);
                }
                else
                {
                    dataset = db.ExecuteDataSet(command);
                }

                dt = dataset.Tables[0];
            }
            catch
            {
                dt = null;
            }
            return dt;
        }

        /// <summary>
        /// Este método equivale a un ExecuteNonQuery pero devuelve true si OK y false si KO
        /// </summary>
        /// <param name="procedure">nombre del procedimiento</param>
        /// <param name="parametros">parámetros del procedimiento</param>
        /// <returns></returns>

        public bool ExecuteNonQueryProcedure(string procedure, params object[] parametros)
        {
            bool bExito = true;
            try
            {               
                DbCommand cmd = (SqlCommand)db.GetStoredProcCommand(procedure, parametros);

                if (_transaccion != null)
                {                   
                    bExito = Utils.getBool(db.ExecuteScalar(cmd,_transaccion));                   
                }
                else
                {
                    bExito = Utils.getBool(db.ExecuteScalar(cmd));
                    //Siempre debe devolver o 0 o 1 el procedimiento
                    //1 equivale a OK
                    //0 equivale a KO

                }
            }
            catch
            {
                bExito = false;
            }
            return bExito;
        }

        /// <summary>
        /// Este método equivale a un ExecuteNonQuery pero devuelve true si OK y false si KO
        /// </summary>
        /// <param name="procedure">nombre del procedimiento</param>       
        /// <returns></returns>

        public bool ExecuteNonQueryProcedure(string procedure)
        {
            bool bExito = true;
            try
            {               
                DbCommand cmd = (SqlCommand)db.GetStoredProcCommand(procedure);

                if (_transaccion != null)
                {
                    bExito = Utils.getBool(db.ExecuteScalar(cmd, _transaccion));
                }
                else
                {
                    bExito = Utils.getBool(db.ExecuteScalar(cmd));
                    //Siempre debe devolver o 0 o 1 el procedimiento
                    //1 equivale a OK
                    //0 equivale a KO

                }
            }
            catch
            {
                bExito = false;
            }
            return bExito;
        }


        /// <summary>
        /// Ejecuta un procedimiento que devuelve un entero devuelve -1 si hay error
        /// </summary>
        /// <param name="procedure">Procedimiento a ejecutar</param>
        /// <param name="parametros">parámetros del procedimiento</param>
        /// <returns></returns>

        public int ExecuteScalarProcedure(string procedure, params object[] parametros)
        {
            int entero = -1;

            try
            {                               
                DbCommand cmd = (SqlCommand)db.GetStoredProcCommand(procedure, parametros);

                if (_transaccion != null)
                {
                    entero = (int)db.ExecuteScalar(cmd,_transaccion );
                }
                else
                {
                    entero = (int)db.ExecuteScalar(cmd);
                }
            }
            catch
            {
                entero = -1;
            }
            return entero;
        }

        /// <summary>
        /// Ejecuta un procedimiento que devuelve un entero devuelve -1 si hay error
        /// </summary>
        /// <param name="procedure">Procedimiento a ejecutar</param>       
        /// <returns></returns>

        public int ExecuteScalarProcedure(string procedure)
        {
           
            int entero = -1;
            try
            {               
                DbCommand cmd = (SqlCommand)db.GetStoredProcCommand(procedure);

                if (_transaccion != null)
                {
                    entero = (int)db.ExecuteScalar(cmd,_transaccion);
                }
                else
                {
                    entero = (int)db.ExecuteScalar(cmd);
                }
            }
            catch
            {
                entero = -1;
            }
            return entero;
        }

        public void ComenzarTransaccion()
        {
            _conexion = db.CreateConnection();

            if (_conexion.State != ConnectionState.Open)
            {
                _conexion.Open();
            }

            _transaccion = _conexion.BeginTransaction();
        }

        public void RollBack()
        {
            if (_transaccion != null)
            {
                _transaccion.Rollback();
                _transaccion.Dispose();
                _transaccion = null;
            }

            _conexion.Close();
        }

        public void Commit()
        {
            if (_transaccion != null)
            {
                _transaccion.Commit();
                _transaccion.Dispose();
                _transaccion = null;
            }

            _conexion.Close();
        }

    }

Aclaración: Las líneas de código donde aparezca Utils.loquesea, lo que hace es llamar a una función que obtiene a partir de un objeto el tipo que se indica, por ejemplo: Utils.getBool(s) obtendrá el booleano habiéndole pasado como parametro un objeto, en nuestro caso se le pasa un entero. Hacer esto es lo mismo que hacer un cast del objeto (bool)s, lo que pasa que en la función tb se tiene en cuenta que el objeto esté vacío. A continuación la función getBool

/// <summary>
/// Procesa un objeto de tipo Boolean
/// Si el objeto es null, devuelve false
/// </summary>
/// <param name="o"></param>
/// <returns></returns>

public static bool getBool(object o)
{
   bool result=false;

   if(o!=null)                     
      result=Convert.ToBoolean(o);            
      
   return result;
}
« Última modificación: Mayo 28, 2007, 04:30:01 por Admin » En línea

Etereo
Global Moderator
Habitante
*****

Karma:9
Desconectado Desconectado

Mensajes: 2374



« Respuesta #2 : Mayo 15, 2007, 08:38:47 »

/// <summary>
/// Valida que una hora este entre 00:00 y 23:59
/// </summary>
/// <param name="hora"></param>
/// <returns></returns>

public static bool esHoraValida(string hora)
{
         
   Regex r = new Regex(@"([0-1][0-9]|2[0-3]):[0-5][0-9]");
   Match m = r.Match(hora);
   return m.Success;
}
En línea

Admin
Administrator
Habitante
*****

Karma:21
Desconectado Desconectado

Mensajes: 4116



WWW
« Respuesta #3 : Mayo 21, 2007, 08:59:47 »

Primero creamos una página que se encargará de acceder a la base de datos y coger la imagen, luego servirá para mostrarla, la llamaremos Imagen.aspx:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.Data.SqlClient;
using System.Drawing;
using System.IO;

public partial class Imagen : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //Recuperamos el paramento con el id de imagen
        string codImg = Request.Params["codImg"];
        //La cadena de conexión estará establecida en el web.config
        string strcnn = ConfigurationManager.ConnectionStrings["CadenaConexion"].ConnectionString;
        SqlConnection cnn = new SqlConnection(strcnn);

        string cmd = "Select Imagen From Tabla_Imagenes where id=@id";

        SqlCommand comm = new SqlCommand(cmd, cnn);
        comm.Parameters.Add(new SqlParameter("@id", SqlDbType.Int)).Value = codImg ;
       
        try
        {

            cnn.Open();
            //Recuperamos la imagen de la Base de datos
            byte[] imagen = (byte[])comm.ExecuteScalar();
            MemoryStream imageStream = new MemoryStream(imagen);
            Response.Clear();
            Response.ContentType = "image/jpeg";
            //Mostramos la imagen en la página directamente
            imageStream.WriteTo(Response.OutputStream);

        }
        catch (SqlException err)
        {
            Response.Clear();
            Response.Write("Error:" + err.Message.ToString());

        }
        finally
        {

            cnn.Close();

        }

    }
}

En el gridview:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" >
            <Columns>
                <asp:ImageField  DataImageUrlField="id" DataImageUrlFormatString="Imagen.aspx?codImg={0}">
                </asp:ImageField>
            </Columns>
        </asp:GridView>

En el Page_Load de la página dónde se encuentra el gridview enlazaremos la tabla de la base de datos dónde habrá un campo que tendrá como nombre "id" y tendrá los ids a las imágenes:

protected void Page_Load(object sender, EventArgs e)
    {
       //La cadena de conexión estará establecida en el web.config
        string strcnn = ConfigurationManager.ConnectionStrings["CadenaConexion"].ConnectionString;
        SqlConnection cnn = new SqlConnection(strcnn);

        string cmd = "Select IdFrom Tabla_Registros";

        SqlCommand comm = new SqlCommand(cmd, cnn);
       
        try
        {
            cnn.Open();
            DataTable dt = new DataTable();
            //Cargamos el SqlDataReader en un DataTable y lo enlazamos al gridview
            dt.Load(comm.ExecuteReader());
            GridView1.DataSource=dt;
            GridView1.DataBind();
        }
        catch (SqlException err)
        {
            Response.Clear();
            Response.Write("Error:" + err.Message.ToString());

        }
        finally
        {

            cnn.Close();

        }

En el web.config establecemos la cadena de conexión:

<connectionStrings>
        <add name="CadenaConexion" connectionString="Aquí pondremos la cadena de conexión a la base de datos"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
« Última modificación: Mayo 21, 2007, 09:03:27 por Admin » En línea

Admin
Administrator
Habitante
*****

Karma:21
Desconectado Desconectado

Mensajes: 4116



WWW
« Respuesta #4 : Mayo 21, 2007, 10:45:14 »

Para comprimir y descomprimir archivos haremos uso del espacio de nombres System.IO.Compression:

Imports System
Imports System.IO
Imports System.IO.Compression

Public Shared Sub GZipCompressDecompress(filename As String)

      Dim infile As FileStream
      Try
         ' Abrir el archivo como un objeto FileStream.
         infile = New FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read)
         Dim buffer(infile.Length - 1) As Byte
         ' Leer el archivo para asegurar que es legible
         Dim count As Integer = infile.Read(buffer, 0, buffer.Length)
         If count <> buffer.Length Then
                infile.Close()
                msg = "Imposible leer desde el archivo"
                MsgBox(msg)
                Return
         End If
         infile.Close()
         Dim ms As New MemoryStream()
         Dim compressedzipStream As New GZipStream(ms, CompressionMode.Compress, True)
         compressedzipStream.Write(buffer, 0, buffer.Length)
         compressedzipStream.Close()
         msg = "Tamaño original: " & buffer.Length & ", Tamaño comprimido: " & ms.Length
          MsgBox(msg)
         'Reseteamos el memotystream para comenzar la descompresión
         ms.Position = 0
         Dim zipStream As New GZipStream(ms, CompressionMode.Decompress)
         Dim decompressedBuffer(buffer.Length + 100) As Byte
         ' Usamos la función ReadAllBytesFromStream para leer el stream.
         Dim totalCount As Integer = GZipTest.ReadAllBytesFromStream(zipStream, decompressedBuffer)
         msg = "Descomprimido " & totalCount & " bytes"
          MsgBox(msg)
         If Not GZipTest.CompareData(buffer, buffer.Length, decompressedBuffer, totalCount) Then
                msg = "Error."
                MsgBox(msg)
         End If
         zipStream.Close()
        Catch e As Exception
            msg = "Error."
            MsgBox(msg)
        End Try

   End Sub 'GZipCompressDecompress
En línea

Admin
Administrator
Habitante
*****

Karma:21
Desconectado Desconectado

Mensajes: 4116



WWW
« Respuesta #5 : Mayo 25, 2007, 08:44:22 »

Para realizar envíos de correos se usa el espacio de nombres System.Web.Mail.

MailMessage correo= new MailMessage();               
correo.From ="info@forosdeinformatica.com"; //Ponemos el email de origen
correo.To = "gobierno@gobierno.com"; // Se lo envío al gobierno a ver si me escucha  Wink
correo.Subject = "Queremos una vivienda digna"; // Asunto del e-mail
correo.BodyFormat = MailFormat.Text; // El formato del email, puede ser texto o html   
correo.Body="Queremos vivienda digna ya!!!"; //   Cuerpo del email         
SmtpMail.Send(correo);   // Realizamos el envío del correo
En línea

Admin
Administrator
Habitante
*****

Karma:21
Desconectado Desconectado

Mensajes: 4116



WWW
« Respuesta #6 : Septiembre 18, 2007, 12:56:59 »

       /// <summary>
        /// Función que devuelve un array de bytes que componen a una imagen de una url especificada
        /// </summary>
        /// <param name="img">array de byte que compone la imagen</param>     
        /// <returns>array de bytes o null si no es una imagen o una url válida</returns>


       public static byte[] getBytesFromUrl(string url)
        {
            try
            {
                byte[] b;
                HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(url);
                myReq.Credentials = CredentialCache.DefaultCredentials;
                WebResponse myResp = myReq.GetResponse();
                if (compruebaSiEsImage(myResp.ContentType))
                {
                    Stream stream = myResp.GetResponseStream();
                    //int i;
                    using (BinaryReader br = new BinaryReader(stream))
                    {
                        b = br.ReadBytes(500000);
                        br.Close();
                    }
                    myResp.Close();
                    return b;
                }
                else
                    return null;
            }
            catch (Exception ex)
            {
                return null;
            }

        }

        /// <summary>
        /// Comprueba si el tipo mime pasado es image
        /// </summary>
        /// <param name="contentType">Tipo mime para comprobar si es image</param>
        /// <param name="img">array de byte que compone la imagen</param>     
        /// <returns>True si es de tipo image y false en caso contrario</returns>

        public static bool compruebaSiEsImage(string contentType)
        {
            if (contentType.Substring(0, contentType.IndexOf('/')) == "image")
                return true;
            else
                return false;
           
        }
En línea

Páginas: [1]
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.13 | SMF © 2006-2009, Simple Machines LLC

XHTML 1.0 válido! CSS válido! Dilber MC Theme by HarzeM