VB .NET - Salvando imagens em um banco de dados
Já mostramos como salvar figura em uma base de dados no VB5 e VB6 . Lembra ??? Se não lembra dê uma olhada no artigo : Imagens e Banco de dados. E se você precisar gravar imagens em um banco de dados usando o VB.NET ???
Tamos aqui para mostrar exatamente isto.
Como exemplo vou criar um banco de dados Cadastro.mdb no diretório c:\teste e a tabela Imagem com a seguinte estrutura:
O objetivo é gravar imagens no campo Imagem do tipo OLE e o tamanho da imagem no campo Tamanho do tipo Texto. Então vamos lá...
1 - Inicie um novo projeto no Visual Studio.NET com as seguintes características (sinta-se a vontade para alterar a seu gosto.)
2- No formulário padrão - form1.vb - insira os controles : label , TextBox , Button conforme figura abaixo:
Obs: Insira também o componente - OpenFileDialog - no projeto. Ele será usado para abrir janela - Abrir Arquivo.
3- Como vamos usar os namespaces System.IO (para tratamento de arquivos) e System.Data.OleDb (para acesso a base de dados) temos que importar estes namespaces no formulário:
Imports System.IO
Imports System.Data.OleDb
4- A seguir vamos declarar as variáveis string sql e strcon também no formulário:
Dim strcon As String
Dim sql As String
5- No evento click do botão de comando insira o código abaixo :
Private
Sub
Button1_Click(ByVal
sender As
System.Object,
ByVal
e As System.EventArgs)
Handles Button1.Click Dim arqImg As FileStream Dim rImg As StreamReader If Len(txtimg.Text) <> 0 Then arqImg = New FileStream(txtimg.Text, FileMode.Open, FileAccess.Read, FileShare.Read) rImg = New StreamReader(arqImg) Else MsgBox("Informe um nome para a imagem que deseja incluir na tabela.", MsgBoxStyle.Critical, "Erro") Exit Sub End If strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\teste\Cadastro.mdb" sql = "INSERT INTO Imagens(Imagem,Tamanho) VALUES (?,?)" Dim conexao As New OleDbConnection(strcon) Dim comando As New OleDbCommand(sql, conexao) Try 'declaramos um vetor de bytes para armazenar o conteúdo da imagem a ser salva Dim arqByteArray(arqImg.Length - 1) As Byte arqImg.Read(arqByteArray, 0, arqImg.Length) 'inclui os parâmetros comando.Parameters.Add("@Imagem", OleDbType.Binary, arqImg.Length).Value = arqByteArray comando.Parameters.Add("@Tamanho", OleDbType.VarChar, 255).Value = arqImg.Length 'abre a conexao , executa o comando e fecha a conexao conexao.Open() comando.ExecuteNonQuery() conexao.Close() MsgBox("Imagem incluida com sucesso !", MsgBoxStyle.Information, "OK") Catch ex As Exception MsgBox(ex.ToString, MsgBoxStyle.Critical, "Erro") End Try End Sub |
O código acima abre uma conexão OLEDB com a base de dados cadastro e cria um comando para inserir a figura informada na tabela Imagem. Como uma imagem é um arquivo do tipo binário definimos o tipo binário na passagem de parâmetros para o comando SQL. Usamos a declaração SQL - INSERT INTO para incluir a imagem no banco de dados.
6- Para encerrar inclua o código que abre a janela de diálogo- Abrir Arquivo
Private
Sub
Button2_Click(ByVal
sender As
System.Object,
ByVal
e As System.EventArgs)
Handles Button2.Click OpenFileDialog1.ShowDialog() txtimg.Text = OpenFileDialog1.FileName End Sub |
Como neste artigo não vou exibir a imagem gravada , se você duvidar , abra o banco de dados e a tabela e veja que a imagem realmente foi gravada:
Até a próxima...
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: