Etereo
Global Moderator
Habitante
Karma: 9
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
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
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
|
|
« 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
|
|
« 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
|
|
« 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 origencorreo.To = " gobierno@gobierno.com"; // Se lo envío al gobierno a ver si me escucha correo.Subject = "Queremos una vivienda digna"; // Asunto del e-mailcorreo.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
|
|
« 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
|
|
|
|
|