Publicidad

Guardar imágenes en SQL Server 2005 desde ASP.NET


Por Alex el 11/11/2007 , Comentar el artículo

Comparte este artículo:        




Con este ejemplo vamos a ver como insertar imágenes en una base de datos SQL Server 2005, como mostrarla por pantalla en el navegador y esto sin necesidad de guardarla imagen en el disco del servidor.


Para realizar este ejemplo lo primero que necesitamos es crearnos un formulario en una página aspx para introducir los datos que queremos guadar en la base de datos. Guardaremos el titulo de la imagen y la imagen.

Imagen

Vamos a utilizar un textbox y un input file (que tiene que ser runat=Server)

Imagen

para insertar los datos en la base de datos y en la siguiente página utilizaremos un control imagen para mostrar la imagen guarda.

Subir imagen al SQL Server.

Para insertar imágenes en Sql Server 2005 vamos a crear una tabla:

CREATE TABLE [dbo].[IMAGES_SQL](
[ID] [numeric](18, 0),
[Titulo] [varchar](150) NULL,
[Imagen] [image] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

Después lo primero que hacemos es comprobar que subimos un fichero y que este no esta vació, después almacenamos ese fichero en una variable de la clase HttpPostedFile para tener acceso al fichero que subimos sin tener que almacenarlo en el disco del servidor.

HttpPostedFile ImgFile = ImagenFile.PostedFile;

Despues convertimos el fichero a una secuencia de bytes para poder alamcenarlo en el Sql Server 2005

Byte[] byteImage = new Byte[ImagenFile.PostedFile.ContentLength];
ImgFile.InputStream.Read(byteImage, 0, ImagenFile.PostedFile.ContentLength);

Una vez tenemos la imagen subida y pasada a byte lo insertamos en el Sql Server con una instruccion INSERT.

string sql = "insert into IMAGES_SQL(Titulo, Imagen)";
sql += " Values(@titulo, @Imagen)";

SqlConnection SqlConn = new SqlConnection("server=localhost;uid=sa;pwd=as;database=PRUEBAS");
SqlCommand SqlCom = new SqlCommand(sql, SqlConn);

SqlCom.Parameters.Add("@Titulo", System.Data.SqlDbType.VarChar, 150);
SqlCom.Parameters["@Titulo"].Value = txtTitulo.Text;
SqlCom.Parameters.Add("@Imagen", System.Data.SqlDbType.Image);
SqlCom.Parameters["@Imagen"].Value = byteImage;

Codigo completo para insertar imagenes en Sql Server 2005:

if ((ImagenFile.PostedFile != null) && (ImagenFile.PostedFile.ContentLength > 0)) {
HttpPostedFile ImgFile = ImagenFile.PostedFile;
// Almacenamos la imagen en una variable para insertarla en la bbdd.
Byte[] byteImage = new Byte[ImagenFile.PostedFile.ContentLength];
ImgFile.InputStream.Read(byteImage, 0, ImagenFile.PostedFile.ContentLength);

string sql = "insert into IMAGES_SQL(Titulo, Imagen)";
sql += " Values(@titulo, @Imagen)";

SqlConnection SqlConn = new SqlConnection("server=localhost;uid=sa;pwd=as;database=PRUEBAS");
SqlCommand SqlCom = new SqlCommand(sql, SqlConn);

SqlCom.Parameters.Add("@Titulo", System.Data.SqlDbType.VarChar, 150);
SqlCom.Parameters["@Titulo"].Value = txtTitulo.Text;
SqlCom.Parameters.Add("@Imagen", System.Data.SqlDbType.Image);
SqlCom.Parameters["@Imagen"].Value = byteImage;

SqlConn.Open();
SqlCom.ExecuteNonQuery();
//SqlConn.Close();

SqlCommand SqlCom1 = new SqlCommand("Select MAX(ID) From IMAGES_SQL", SqlConn);

string lastID = SqlCom1.ExecuteScalar().ToString();

SqlConn.Close();

Response.Redirect("mostrar.aspx?ID=" + lastID);
}

Leer imágenes del Sql Server.

Una vez que hemos insertado las imagnes en el Sql Server 2005 lo normal es que queramos leerlas y mostrarlas en el navegador, para esto realizamos los siguientes pasos:

Con una consulta SELECT buscamos la imagen recién insertada

string sql = "Select Imagen From IMAGES_SQL Where ID = " + Request.QueryString["ID"];

Devolvemos la imagen buscada en una variable de tipo byte:

byte[] byteImage = (byte[])SqlCom.ExecuteScalar();

Y lo mostramos por pantalla especificando que lo que mostramos es una imagen:

.ContentType = "image/jpeg";
Response.Expires = 0;
Response.Buffer = true;
Response.Clear();
Response.BinaryWrite(byteImage);
Response.End();

Codigo completo:

string sql = "Select Imagen From IMAGES_SQL Where ID = " + Request.QueryString["ID"];

SqlConnection SqlConn = new SqlConnection("server=localhost;uid=sa;pwd=as;database=PRUEBAS");
SqlCommand SqlCom = new SqlCommand(sql, SqlConn);

SqlConn.Open();
byte[] byteImage = (byte[])SqlCom.ExecuteScalar();
SqlConn.Close();

if (byteImage != null) {
Response.ContentType = "image/jpeg";
Response.Expires = 0;
Response.Buffer = true;
Response.Clear();
Response.BinaryWrite(byteImage);
Response.End();
}

Y con este ejemplo podemos insertar y leer imagnes con ASP.NET y Sql Server.

Os dejo el codigo fuente del ejemplo

Enlaces relacionadas:

Código del artículo 

Feliz programing!!


Si te ha gustado el artículo compartelo en:        


Publicidad

También puede interesarte:

Instalar .NET Core en Ubuntu

Instalar .NET Core en Ubuntu

Por Alex, el 07/02/2020

Limpiar datos de un combobox en winforms.

Limpiar datos de un combobox en winforms.

Por Alex, el 23/03/2010

Crear, copiar y borrar bases de datos SQL Server desde c#.

Crear, copiar y borrar bases de datos SQL Server desde c#.

Por Alex, el 07/03/2010

Escribir en un excel desde c#.

Escribir en un excel desde c#.

Por Alex, el 04/03/2010

Llenar un Repeater o DataList con un DataTable.

Llenar un Repeater o DataList con un DataTable.

Por Alex, el 29/12/2008

El evento SelectedIndexChanged no funciona

El evento SelectedIndexChanged no funciona

Por Alex, el 26/12/2008


Añadir un comentarios:

Nombre:
Email: (no se publica el email)




SIGUENOS EN

ARCHIVO

Publicidad

.