You are on page 1of 4

Guardar y Recuperar imagenes de una Base de Datos SQL Server

Form1.vb Imports System.Data.SqlClient Imports System.IO Public Class Form1 Dim conn As New SqlConnection 'conexion con la base de datos Dim cmd As New SqlCommand 'sentencia sql a utilizar Dim cod As New SqlParameter("@codigo", SqlDbType.Int) Dim nom As New SqlParameter("@nombre", SqlDbType.VarChar, 50) Dim sex As New SqlParameter("@sexo", SqlDbType.Bit) Dim pa As New SqlParameter("@foto", SqlDbType.Image) Dim data() As Byte 'arreglo de bytes el cual contedra la imagen Dim ios As FileStream 'Manejo de archivos Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.OpenFileDialog1.Filter = "Imagenes (JPG)|*.jpg" 'filtro de archivos del OpenFileDialog If Me.OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.Cancel Then ' en caso de que se aplaste el boton cancelar salga y no haga nada Exit Sub Else ios = New FileStream(Me.OpenFileDialog1.FileName, FileMode.Open, FileAccess.Read)

'instanciamos en Stream indicandole la ruta del arvhivo,el modo de acceso y si es de lectura o escritura ReDim data(ios.Length) 'llenamos el arreglo ios.Read(data, 0, CInt(ios.Length)) 'llenamos el arreglo Me.PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage 'establecemos como se visualiza la imagen Me.PictureBox1.Load(Me.OpenFileDialog1.FileName) 'visualizamos abriendo el archivo seleccionado End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click cod.Value = CInt(Me.TextBox1.Text) nom.Value = Me.TextBox2.Text sex.Value = 1 pa.Value = data cmd.CommandText = "sp_1" ' realizacion la sentencia sql respectiva cmd.CommandType = CommandType.StoredProcedure conn.ConnectionString = _ "Integrated security=true;server=.;database=test" 'establecemos conexion con la base de datos cmd.Connection = conn cmd.Parameters.Add(cod) cmd.Parameters.Add(nom) cmd.Parameters.Add(sex) cmd.Parameters.Add(pa) 'agregamos el parametro a la sentencia conn.Open() 'abrimos la conexion cmd.ExecuteNonQuery() 'ejecutamos la sentencia conn.Close() 'cerramos la conexion MessageBox.Show("Imagen almacenada en la base de datos", "Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information) 'informamos al usuario End Sub

Form2.vb Imports System.Data Imports System.Data.SqlClient Imports System.IO Imports System.Drawing.Imaging Public Class Form2 Dim cn As New SqlConnection Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim cmd As New SqlCommand _ ("SELECT * FROM prueba where codigo=" & Integer.Parse(Me.TextBox1.Text) & "", cn) Dim da As New SqlDataAdapter(cmd) Dim ds As New DataSet() da.Fill(ds, "Prueba") Dim c As Integer = ds.Tables("Prueba").Rows.Count If c > 0 Then Dim bytBLOBData() As Byte = ds.Tables("Prueba").Rows(0)("Foto") Dim stmBLOBData As New MemoryStream(bytBLOBData) Me.PictureBox1.Image = Image.FromStream(stmBLOBData) Me.TextBox2.Text = ds.Tables("Prueba").Rows(0)("Nombre") Me.CheckBox1.Checked = IIf(ds.Tables("Prueba").Rows(0)("sexo") = 1, True, False) End If End Sub

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load cn.ConnectionString = _ "Integrated security=true;server=.;database=test" 'establecemos conexion con la base de datos End Sub End Class Base de Datos CREATE DATABASE TEST drop table prueba create TABLE PRUEBA ( CODIGO INT PRIMARY KEY, NOMBRE VARCHAR(50), SEXO BIT, FOTO Image ) Create proc sp_1 @CODIGO INT , @NOMBRE VARCHAR(50), @SEXO BIT, @FOTO Image as insert into prueba values (@codigo,@nombre,@sexo,@foto)

You might also like