SALVAR IMAGEM NO FIREBIRD

 Tópico anterior Próximo tópico Novo tópico

SALVAR IMAGEM NO FIREBIRD

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#480084 - 09/03/2018 13:32:17

SURI
LUANDA
Cadast. em:Maio/2009


Olá vbmaníacos,
Estou com um "probleminha" aqui. Depois de muitas buscas aqui no site e pela internet em geral não encontrei nada em concreto que fosse exatamente adaptado ao que preciso. O código que achei mais aproximado às minhas necessidades está dando erro, ele foi feito no VS2008 e a BD access. Fiz algumas adaptações mas dá erro na mesma, postando o código:
Dim ff As IO.FileStream
                ff = New IO.FileStream(imagem, IO.FileMode.Open, IO.FileAccess.Read)
                Dim picByte As Byte() = New Byte(ff.Length - 1) {}
                ff.Read(picByte, 0, System.Convert.ToInt32(ff.Length))
                ff.Close()


                Try
                    cmd.CommandText = "INSERT INTO foto(foto) values (" & " @img)"
                    Dim imgParam As New System.Data.Odbc.OdbcParameter
                    imgParam.OdbcType = Odbc.OdbcType.Binary
                    imgParam.ParameterName = "img"
                    imgParam.Value = picByte
                    cmd.Parameters.Add(imgParam)
                    cmd.ExecuteNonQuery()
                  
                    cmd.Dispose()
                Catch ex As Exception
                    MessageBox.Show(ex.Message)
                End Try

Nota: estou usando o VS 2012 Professional e o banco Firebird 2.5  - Conexão ODBC

Não é errado fazer muitas perguntas, mas sim deixar muitas perguntas por fazer!




#480085 - 09/03/2018 14:01:31

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
"Está dando erro" é muito vago para podermos ajudar. Que erro? Em que momento?

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#480086 - 09/03/2018 14:06:01

NILTON_VIANNA
AMPARO - SP
Cadast. em:Fevereiro/2009



"@Image", SqlDbType.Image)).Value = picByte

            Dim imgParam As New FbParameter()
            imgParam.FbDbType = FbDbType.Binary
            imgParam.Value = picByte




#480090 - 09/03/2018 17:37:32

OMAR2011
MONTES CLAROS
Cadast. em:Setembro/2011


Faça um teste.
Dim fbcmd As New OdbcCommand
        Dim cn As New OdbcConnection("DRIVER=Firebird/InterBase(r) driver; UID=SYSDBA;PWD=masterkey; DBNAME=localhost:C:\Users\User\Documents\Visual Studio 2015\Projects\Novofirebird\Novofirebird\bin\BRAS2020.FDB")
        cn.Open()
        Dim ms As New MemoryStream
        Picimagem.Image.Save(ms, Picimagem.Image.RawFormat) ' Imagem está no picturebox

        Dim arrImage() As Byte = ms.GetBuffer
        With fbcmd
            .CommandType = CommandType.Text
            .CommandText = ""
            .CommandText = "Insert into IMOVEIS (imovelid, imagem)values(?,?)"
            .Connection = cn
            .Parameters.Add(New OdbcParameter("@Imagem", OdbcType.Int)).Value = 6
            .Parameters.Add(New OdbcParameter("@Imagem", OdbcType.Image)).Value = arrImage

        End With
        fbcmd.ExecuteNonQuery()
        MsgBox("Registro inserido com Sucesso.", MsgBoxStyle.Information)
        fbcmd.Parameters.Clear()
        fbcmd.Cancel()
        cn.Close()



#480093 - 10/03/2018 04:12:23

SURI
LUANDA
Cadast. em:Maio/2009


Citação:
:
"Está dando erro" é muito vago para podermos ajudar. Que erro? Em que momento?



Nesta linha a variável @img que é definida no parâmetro a seguir, está sendo interpretada pela BD como um campo, porque a  a mensagem de erro diz: "Column Unknown   [@img]"
cmd.CommandText = "INSERT INTO foto(foto) values (" & " @img)"



Não é errado fazer muitas perguntas, mas sim deixar muitas perguntas por fazer!




#480094 - 10/03/2018 08:56:29

GUIMORAES
ITAPETININGA
Cadast. em:Agosto/2009


Você está usando Odbc para fazer a comunicação com o firebird?
Bom, acredito que você esteja iniciando este projeto, então recomendo que você utilize o ADO.net.

Para fazer isto, é muito simples.

  

'Você deve converter a sua foto para um array de bytes, e no seu banco, o campo foto deve ser do tipo blob

dim sql as string = "Insert into tabela (foto) values (@foto)"

Using cmd As New FbCommand(sql, fbconnection)
      cmd.Parameters.Add("@foto", arrbyte.Length).Value = arrbyte
      cmd.ExecuteNonQuery()
End Using





#480102 - 12/03/2018 08:17:01

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


Nunca trabalhei com FIREBIRD, mas ele tem o tipo de campo para imagem ou voce usa o BLOB?, se for BLOB, tem que tratar e depois salvar

O conhecimento é como o dinheiro: quanto mais temos, mais queremos ter (Josh Billings)  


#480103 - 12/03/2018 09:20:03

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


Desculpa, não prestei atenção no código rsrsrsrs

O conhecimento é como o dinheiro: quanto mais temos, mais queremos ter (Josh Billings)  


 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário