Inserir Imagens no SQL Server

Inserir Imagens no SQL Server

Olá,

Muitos leitores me enviam e-mails perguntando sobre como armazenar imagens no banco de Dados MS-SQL Server.
O que digo é que existem duas alternativas para a gestão de imagens neste banco de dados:

1. Guardar apenas a localização e colocar a imagem no servidor.

2. Gravar a imagem diretamente num campo.

Para gravar imagens diretamente no SQL Server, utilize o tipo de dados: Varbinary (max) – que pode atingir até 2 gb.
O Aplicativo de front end é principal responsável pela manipulação da imagem. Diversas Linguagens possuem funções de tratamento de imagens.
Para inserir a imagem é necessário ler, gravar num array de bytes e finalmente utilizar esse array para gravar na base de dados.
Eis um exemplo de como o fazer:

‘ Define a Connection String

Dim myConnectionString As String = _
“Data Source=.\SQLEXPRESS;AttachDbFilename=’c:\meuDatabase.mdf’;Integrated Security=True;User Instance=True”

Try

‘ Cria um novo FileStream para leitura da imagem
Dim fs As New IO.FileStream(“c:\imagem.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 = “renato”
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

 

Participe do grupo de Usuários Ms-Sql Server – Brasil

http://br.groups.yahoo.com/group/mssql-l/

Compartilhe esta matéria
  ,


Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *