Ferramentas de Usuário

Ferramentas de Site


dev_net:vb.net:inserir_imagens_sql_server

Inserir Imagens no SQL Server

Em dois artigos anteriores, foram abordadas algumas formas de trabalhar com dados num servidor SQL. Gestão de Dados em SQL Server - Parte I e Gestão de Dados em SQL Server - Parte II mostraram como inserir, modificar, apagar e ler dados, mas no entanto podem-se também inserir imagens e não basta simplesmente indicar qual é a imagem.

Existem duas alternativas para a gestão de imagens: guardar apenas a localização e colocar a imagem no servidor ou gravar a imagem directamente num campo.

Para inserir a imagem é necessário ler, gravar num array de bytes e finalmente utilizar esse array para gravar na base de dados.

Exemplo

Eis um exemplo de como o fazer:

        ' Define a Connection String
        Dim myConnectionString As String = _
            "Data Source=.SQLEXPRESS;AttachDbFilename='c:myDatabase.mdf';Integrated Security=True;User Instance=True"
 
        Try
 
            ' Cria um novo FileStream para leitura da imagem
            Dim fs As New IO.FileStream("c:image.jpg", IO.FileMode.Open, IO.FileAccess.Read)
 
            ' Cria um array de Bytes do tamanho do FileStream 
            Dim ImageData(fs.Length() - 1) As Byte
 
            ' Lê os bytes do FileStream para o array criado
            fs.Read(ImageData, 0, ImageData.Length)
 
            ' Fecha o FileStream ficando a imagem guardada no array
            fs.Close()
 
 
            Using connection As New SqlClient.SqlConnection(myConnectionString)
 
                ' Define o commando Transact-SQL para inserir dados
                Dim SQL As String = "INSERT INTO contacts ([name],[img]) VALUES (@name,@img);"
                Dim command As New SqlClient.SqlCommand(SQL, connection)
 
 
                ' Define os parametros para a inserção de dados, onde está o array 
                ' de bytes(imagem) a ser inserida. O tipo do campo é Image
                command.Parameters.Add("@name", SqlDbType.VarChar).Value = "jpaulino"
                command.Parameters.Add("@img", SqlDbType.Image).Value = ImageData
 
                connection.Open()
 
                ' Insere os campos no SQL
                command.ExecuteNonQuery()
 
            End Using
 
        Catch ex As Exception
            MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

Autoria

Este artigo foi inicialmente escrito por Jorge Paulino para o seu blog VBTuga - Visual Basic em Português.

dev_net/vb.net/inserir_imagens_sql_server.txt · Última modificação em: 2018/05/14 21:37 (edição externa)