Está en la página 1de 5

INSERTAR UNA IMAGEN EN BASES DE DATOS SQL SERVER 2008 CON VISUAL STUDIO 2008(C#)

Uno de los temas un poco mas complicados de mantenimiento de Registros en Bases de Datos es el de poder insertar Imgenes o fotografas cuando sea necesario para el cliente, navegando un poco por la web encontr algunas soluciones, pero me quede con la ms fcil, en el prximo tutorial a ste mostrar como hacer para mostrar los registros que guarden imagenes en REPORTING SERVICES y/o CRYSTAL REPORT, pero primero paso a paso como insertar un registro que contiene imagen en C#. 1. CREAR LA BASE DE DATOS Y LA TABLA EN SQL SERVER 2008 - Clic en nueva consulta y escribir el siguiente cdigo y luego ejecutar

2. CREAR EL PROYECTO EN VISUAL STUDIO 2008 Y DISEAR LA INTERFAZ - Proyecto de Aplicacion Windows c# - Para mostrar la imagen elegir el control PictureBox

3. ESCRIBIR EL CDIGO DEL BOTN EXAMINAR PARA QUE SE ABRA EL CUADRO DE SELECCIN DE LA IMAGEN Y SELECCIONEMOS LA IMAGEN DESEADA Y SE MUESTRE EN EL PICTURE BOX

- cuando ejecutamos se muestra de la siguiente manera

4. ESCRIBIR EL CDIGO PARA EL BOTN GUARDAR


private void btnGuardar_Click(object sender, EventArgs e) { try { System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(@"Data Source= (local);Initial Catalog=EJEMPLO;Integrated Security=SSPI"); System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(); // Estableciento propiedades cmd.Connection = conn; cmd.CommandText = "INSERT INTO Productos VALUES (@Codigo, @Descripcion, @Cantidad, @precio, @foto)"; // Creando los parmetros necesarios cmd.Parameters.Add("@Codigo", System.Data.SqlDbType.Int); cmd.Parameters.Add("@Descripcion", System.Data.SqlDbType.NVarChar); cmd.Parameters.Add("@Cantidad", System.Data.SqlDbType.Int); cmd.Parameters.Add("@precio", System.Data.SqlDbType.SmallMoney); cmd.Parameters.Add("@foto", System.Data.SqlDbType.Image); // Asignando los valores a los atributos cmd.Parameters["@Codigo"].Value = int.Parse(txtCodigo.Text); cmd.Parameters["@Descripcion"].Value = txtDescripcion.Text; cmd.Parameters["@Cantidad"].Value = int.Parse(txtCantidad.Text); cmd.Parameters["@precio"].Value = float.Parse(txtPrecio.Text); // Asignando el valor de la imagen // Stream usado como buffer System.IO.MemoryStream ms = new System.IO.MemoryStream();

// Se guarda la imagen en el buffer picFoto.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); // Se extraen los bytes del buffer para asignarlos como valor para el // parmetro. cmd.Parameters["@foto"].Value = ms.GetBuffer(); conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); } catch (System.Exception ex) { MessageBox.Show(ex.Message); } MessageBox.Show("Registro Guardado Correctamente"); } } }

5. EJECUTAMOS Y PROBAMOS

6. VERIFICAMOS EN LA BASE DE DATOS SI SE GUARDO EL REGISTRO

Como vemos el registro se guardo correctamente y en la columna Foto se guarda y valor de la ubicacin en memoria de dicha imagen que se ha extrado sus bytes, para almacenarlos

en un buffer que es finalmente en esta forma como se almacena en la BD. Gracias