martes, 29 de marzo de 2011

codigo Reparado para cargar imagenes y mostrarlas


Saludos esta ves estaba buscando la manera de mostrar imagenes y cargarlas desde sqlserver 2005 con apoyo de .net

he aqui el codigo y funciona.

Bueno y mesclado con lo siguiente de la fuente:

http://jquispe.wordpress.com/2009/10/11/guardar-imagenes-en-sql-server-2005-y-recuperarlas-desde-net/
---------------------------------------------------






Imports System.IO
Imports System.Text
Imports System.Data.SqlClient

Public Class Form1

Dim OpenFD As New OpenFileDialog

Dim connectionString As String = "Data Source = (local);Initial Catalog = basededatos;User = sa; Password="
Public cn As SqlConnection = New SqlConnection(connectionString)
Public ds As New DataSet





Private Sub BtnInsertar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnInsertar.Click
Try
cn.Open()
Dim arrFilename() As String = Split(Text, "\")
Array.Reverse(arrFilename)

Dim ms As New MemoryStream
PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
Dim arrImage() As Byte = ms.GetBuffer

Dim cmd As New SqlCommand("Insert Into MyTablePreview(Nombre,Descripcion,Imagen)Values(@Nombre,@Descripcion,@Imagen)", cn)
With cmd
.Parameters.Add(New SqlParameter("@Nombre", SqlDbType.NVarChar, 10)).Value = Me.txtNombre.Text
.Parameters.Add(New SqlParameter("@Descripcion", SqlDbType.NText, 10)).Value = Me.txtDescripcion.Text
.Parameters.Add(New SqlParameter("@Imagen", SqlDbType.Image)).Value = arrImage
End With
MessageBox.Show("Registro Insertado Correctamente")
cmd.ExecuteNonQuery()
carga()
Catch sqlExc As SqlException
MessageBox.Show(sqlExc.ToString, "SQL Exception Error!", MessageBoxButtons.OK, MessageBoxIcon.Error)
Catch ex As Exception
MsgBox(ex.Message)
Finally
cn.Close()
End Try
End Sub



Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
carga()

End Sub


Sub carga()
Dim daCategories As New SqlDataAdapter("Select * From MyTablePreview", cn)
ds.Clear()
daCategories.Fill(ds, "MyTablePreview")
Me.DataGridView1.DataSource = ds
Me.DataGridView1.DataMember = "MyTablePreview"
End Sub

Private Sub BtnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnNuevo.Click
Me.txtNombre.Text = ""
Me.txtDescripcion.Text = ""
'txtnombrecategoria.Focus()
End Sub

Private Sub BtnExaminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnExaminar.Click
With OpenFD
.InitialDirectory = ""
.Filter = "Todos los Archivos|*.*|JPEGs|*.jpg|GIFs|*.gif|Bitmaps|*.bmp"
.FilterIndex = 2
End With
If OpenFD.ShowDialog() = Windows.Forms.DialogResult.OK Then
With PictureBox1
.Image = Image.FromFile(OpenFD.FileName)
.SizeMode = PictureBoxSizeMode.StretchImage
.BorderStyle = BorderStyle.Fixed3D
Me.BtnInsertar.Enabled = True
End With
End If
End Sub

Function ExtraerImagen(ByVal Foto As Integer) As Byte()
Dim SqlSelect As String = "Select Imagen From MyTablePreview Where Codigo = " & Foto
Dim Command As New SqlCommand(SqlSelect, cn)
cn.Open()
Dim MyPhoto() As Byte = CType(Command.ExecuteScalar(), Byte())
cn.Close()
Return MyPhoto
End Function

Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
Try
TxtCodigo.Text = Convert.ToString(Me.DataGridView1.CurrentRow.Cells(0).Value)
txtNombre.Text = Convert.ToString(Me.DataGridView1.CurrentRow.Cells(1).Value)
txtDescripcion.Text = Convert.ToString(Me.DataGridView1.CurrentRow.Cells(2).Value)
Dim ms As New MemoryStream(ExtraerImagen(CInt(Me.TxtCodigo.Text)))
PictureBox1.Image = Drawing.Image.FromStream(ms)
'PictureBox1.Image = DataGridView1.SelectedCells(3).Value
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class


No hay comentarios:

Publicar un comentario