Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Otaku_

[Resolvido] Exibir imagem salva no banco de dados em PictureBox V

Recommended Posts

Olá! estou começando em visual basic agora e gostaria de saber como posso exibir uma imagem que esta salva no Banco de Dados em uma Picture Box

 

meu codigo dos botoes para abrir e gravar a imagem no banco

Private Sub B_Abrir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_Abrir.Click

       OpenFileDialog1.ShowDialog()
       TextBox1.Text = OpenFileDialog1.FileName

   End Sub

   Private Sub B_Gravar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_Gravar.Click
       Dim arqIma As FileStream
       Dim rImag As StreamReader
       If Len(TextBox1.Text) <> 0 Then
           arqIma = New FileStream(TextBox1.Text, FileMode.Open, FileAccess.Read, FileShare.Read)
           rImag = New StreamReader(arqIma)
       Else
           MsgBox("Informe um nome para a Imagem", MsgBoxStyle.Critical, "Erro")
           Exit Sub
       End If
       strcon = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\PROGRANS\imagem\imagem\Database1.mdf;Integrated Security=True;User Instance=True"
       sql = "INSERT INTO Table1 (imagem) VALUES (@imagem)"
       Dim conexao As New SqlClient.SqlConnection(strcon)
       Dim comando As New SqlClient.SqlCommand(sql, conexao)

       Try
           Dim arqByteArray(arqIma.Length - 1) As Byte
           arqIma.Read(arqByteArray, 0, arqIma.Length)
           comando.Parameters.Add("@imagem", SqlDbType.Binary, arqIma.Length).Value = arqByteArray
           conexao.Open()
           comando.ExecuteNonQuery()
           conexao.Close()
           MsgBox("Imagem Incluida com Sucesso", MsgBoxStyle.Information, "OK")
       Catch ex As Exception
           MsgBox(ex.Message, MsgBoxStyle.Critical, "ERRO")
       End Try
       TextBox1.Text = ""
   End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por favor use a tag code.

 

Vou corrigir umas coisas no seu código aqui, achei algumas redundancias:

 

 

Private Sub B_Abrir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_Abrir.Click

OpenFileDialog1.ShowDialog()
TextBox1.Text = OpenFileDialog1.FileName

End Sub

Private Sub B_Gravar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_Gravar.Click

If Len(TextBox1.Text) <> 0 Then
Dim arqIma As FileStream = New FileStream(TextBox1.Text, FileMode.Open, FileAccess.Read, FileShare.Read)
Dim rImag As StreamReader = New StreamReader(arqIma)

Else
MsgBox("Informe um nome para a Imagem", MsgBoxStyle.Critical, "Erro")
Exit Sub

End If

strcon = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\PROGRANS\imagem\imagem\Database1.mdf;Integrated Security=True;User Instance=True"
sql = "INSERT INTO Table1 (imagem) VALUES (@imagem)"
Dim conexao As New SqlClient.SqlConnection(strcon)
Dim comando As New SqlClient.SqlCommand(sql, conexao)

Try

Dim arqByteArray(arqIma.Length - 1) As Byte
arqIma.Read(arqByteArray, 0, arqIma.Length)
comando.Parameters.Add("@imagem", SqlDbType.Binary, arqIma.Length).Value = arqByteArray
conexao.Open()
comando.ExecuteNonQuery()
conexao.Close()
MsgBox("Imagem Incluida com Sucesso", MsgBoxStyle.Information, "OK")

Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "ERRO")
End Try

TextBox1.Text = ""
End Sub 

 

 

Veja este tutorial:

 

http://www.macoratti.net/vbna_cp2.htm

http://www.macoratti.net/vbn_img.htm

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom... você disse que achou algumas redundancias.. ok.. vejo depois... mas essa parte do codigo está funcionado perfeitamente...

 

a minha duvida é sobre recuperar a imagem que já está salva no banco...

 

mas vou dar uma olhada nos links. Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o contrário do que você fez:

 

Tente desta maneira, não sei se vai funcionar porque não testei, mas veja se funciona:

 

 

Dim stream As Stream

       stream.Read(arqByteArray, 0, arqIma.Length)
       Dim img As Bitmap = New Bitmap(stream)
Picbox.Image = img

 

 

Você vai precisar buscar os bytes do banco, depois ler a quantidade e armazenar em uma variável, depois precisará de um FileStream com a String desses bytes retornados do banco, e por fim você vai precisar fazer tudo isso dentro de uma função separada e ver se o picturebox lê a imagem. Fiz o contrário de você neste método, preste atenção que você entenderá.

 

Os objetos neste método que tem o mesmo nome dos objetos do seu método são os que precisam ser recriados e repopulados

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.