• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

TrymBeast

Escrever imagem em SQL Server [VB.NET]

2 mensagens neste tópico

Olá!

Tenho esta dúvida, e não consigo encontrar nenhuma solução para ela, mesmo depois de ter passado várias horas a vasculhar na Net, e de todas as soluções encontradas dão sempre erro. A maior parte das vezes aparece em ASP.NET, mas quero fazer isto numa aplicação windows.

Pelo que eu percebi, a lógica para guardar será a de guardar os bytes da imagem num array de bytes, mas, depois não consigo inserir esse array na bas de dados, experimente com os campos de tipo image e binary e nenhum deu.

A maneira que me parece ser a melhor é usando um parameter na base de dados, mas dá-me sempre um erro a dizer que a variável @Photo não foi declarada.

o código deverá estar algo assim, pois não o tenho comigo agora.

a variável byt é o tal array de bytes

BD.cmd.CommandText = "INSERT INTO AssetItemRegister (AssetPic) VALUES (@Photo)"
BD.cmd.parameter.add("@Photo", byt)

não incluí as partes de abrir conexão, fechar conexão, e de executar o sql,

mas diz-me sempre que a variável @Photo não foi declarada, alguém me consegue explicar porquê? Já tentei de outras maneiras e nunca funcionou, a maioria das vezes dando mais erros diferentes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas.

Eu uso este código para inserir pictures na tabela blob_teste que tem 2 campos: id int identity(1,1) not null e aa image not null

Private Sub File2SqlBlob(ByVal SourceFilePath As String)
       Try
           Dim cn As New SqlConnection("server=10.1.1.13;integrated security=no;database=Dinefer;user id=sa;password=12345;")
           Dim cmd As New SqlCommand("INSERT INTO blob_teste VALUES(@Picture)")
           Dim fs As New System.IO.FileStream(SourceFilePath, IO.FileMode.Open, IO.FileAccess.Read)
           Dim b(fs.Length() - 1) As Byte
           fs.Read(b, 0, b.Length)
           fs.Close()
           Dim P As New SqlParameter("@Picture", SqlDbType.Image, b.Length, ParameterDirection.Input, False, 0, 0, Nothing, DataRowVersion.Current, b)
           cmd.Parameters.Add(P)
           cn.Open()
           cmd.Connection = cn
           cmd.ExecuteNonQuery()
           cn.Close()
       Catch ex As Exception
           MessageBox.Show(ex.Message)
       End Try
   End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora