SALVAR IMAGEM NO POSTGRESQL
Alguém tem código ou rotina que salve uma [txt-color=#e80000]IMAGEM[/txt-color]no banco de dados do Postgresql.
Não quero gravar caminho no banco.
Eu consigo gravar a imagem nos bancos.
Sqlserver,Acesss,Interbase,Firebird,Oracle 10 e 11g.
Os códigos retirados da net não funciona com Postgresql.
Mas esse tal de postgres é o bicho.
Fiz pesquisa na net e não encontrei nada.
Estou usando[txt-color=#007100] VB2010[/txt-color]
Valeu
Não quero gravar caminho no banco.
Eu consigo gravar a imagem nos bancos.
Sqlserver,Acesss,Interbase,Firebird,Oracle 10 e 11g.
Os códigos retirados da net não funciona com Postgresql.
Mas esse tal de postgres é o bicho.
Fiz pesquisa na net e não encontrei nada.
Estou usando[txt-color=#007100] VB2010[/txt-color]
Valeu
Tem que ver qual o tipo de dados que o campo precisa ter no caso do PG. Já notei que o PG segue muita [Ô]coisa[Ô] do Oracle. No Oracle usamos o tipo de dados Blob pra isso. Já sabe qual tipo de dados seu campo precisa usar para gravar essas imagens.
O campo Imagem do postgres segundo pesquisa e o BYTEA.
O interessante que o código que uso salva em todos os banco
na qual citei acima.
Postgresql não.
Vamos esperar mais resposta.
Valeu.
O interessante que o código que uso salva em todos os banco
na qual citei acima.
Postgresql não.
Vamos esperar mais resposta.
Valeu.
Poste seu código pra facilitar.
Este código peguei do Macoratti.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim conexao As String
conexao = ([Ô]Provider=SQLNCLI10;Server=localhost;Database=Bras2012; Trusted_Connection=yes;[Ô])
[ô]conexao = [Ô]Provider=PostgreSQL OLE DB Provider;Data Source=Localhost;location=Bras2012;User ID=postgres;password=12qw;[Ô]
conn = New OleDbConnection(conexao)
If conn.State = ConnectionState.Open Then conn.Close()
Try
Call tempValue()
Dim fst As New FileStream(Application.StartupPath + [Ô] emp.dat[Ô], FileMode.Open)
Dim arrbyte(fst.Length) As Byte
fst.Read(arrbyte, 0, arrbyte.Length)
fst.Close()
Dim s1 As String = [Ô]INSERT INTO Figura(Cod,Figura)VALUES([ô][Ô] & txtCod.Text & [Ô][ô], ?)[Ô]
Dim cmnd As New OleDbCommand(s1, conn)
Dim par As New OleDbParameter([Ô]@Figura[Ô], OleDbType.LongVarBinary)
par.Value = arrbyte
par.Size = arrbyte.Length
cmnd.Parameters.Add(par)
conn.Open()
cmnd.ExecuteNonQuery()
MsgBox([Ô]Registrado com sucesso[Ô])
conn.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim conexao As String
conexao = ([Ô]Provider=SQLNCLI10;Server=localhost;Database=Bras2012; Trusted_Connection=yes;[Ô])
[ô]conexao = [Ô]Provider=PostgreSQL OLE DB Provider;Data Source=Localhost;location=Bras2012;User ID=postgres;password=12qw;[Ô]
conn = New OleDbConnection(conexao)
If conn.State = ConnectionState.Open Then conn.Close()
Try
Call tempValue()
Dim fst As New FileStream(Application.StartupPath + [Ô] emp.dat[Ô], FileMode.Open)
Dim arrbyte(fst.Length) As Byte
fst.Read(arrbyte, 0, arrbyte.Length)
fst.Close()
Dim s1 As String = [Ô]INSERT INTO Figura(Cod,Figura)VALUES([ô][Ô] & txtCod.Text & [Ô][ô], ?)[Ô]
Dim cmnd As New OleDbCommand(s1, conn)
Dim par As New OleDbParameter([Ô]@Figura[Ô], OleDbType.LongVarBinary)
par.Value = arrbyte
par.Size = arrbyte.Length
cmnd.Parameters.Add(par)
conn.Open()
cmnd.ExecuteNonQuery()
MsgBox([Ô]Registrado com sucesso[Ô])
conn.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
No PG eu não sei, mas o que eu faria é o seguinte:
Pegaria a imagem, converteria ela para o formato binário e gravaria no banco.
Depois apenas faria o caminho contrário para recuperar a imagem.
Att,
Lucas
Pegaria a imagem, converteria ela para o formato binário e gravaria no banco.
Depois apenas faria o caminho contrário para recuperar a imagem.
Att,
Lucas
Ola.. vi que esta com problema em salvar imagem no PostGreSQL.. bem.. para esta finalidade precisei procurar muito e encontrei em um site russo depois de 2 dias de busca....
referencia:
http://www.sql.ru/forum/actualthread.aspx?tid=298680
No postgre não encontrei outra forma a não se esta
para exprtar uma imagem
lo_export
para importar (salvar no banco)
lo_import
Exemplos
Exportar (recuperar a imagem salva)
SQL = [Ô]SELECT lo_export(tb_imagens.img_imagem, [ô][Ô] & App.Path & [Ô]\foto.jpg[ô]) FROM tb_imagens WHERE img_chave = [ô][Ô] & Chave & [Ô][ô][Ô]
Imporat (Salvar no banco)
SQL = [Ô]INSERT INTO tb_imagens (img_chave, img_imagem,img_nome) VALUES ([ô][Ô] & Chave & [Ô][ô], lo_import([ô][Ô] & App.Path & [Ô]\foto.jpg[Ô] & [Ô][ô])[Ô]
O único inconveniente que anchei foi que ele não salva em rede.. ou seja.. quem faz a importação é o próprio servidor de banco de dados.. portanto acredito que deva criar uma pasta compartilhada e desta forma indicar esta pasta como a pasta padrão da imagem...
Espero ter ajudado...
referencia:
http://www.sql.ru/forum/actualthread.aspx?tid=298680
No postgre não encontrei outra forma a não se esta
para exprtar uma imagem
lo_export
para importar (salvar no banco)
lo_import
Exemplos
Exportar (recuperar a imagem salva)
SQL = [Ô]SELECT lo_export(tb_imagens.img_imagem, [ô][Ô] & App.Path & [Ô]\foto.jpg[ô]) FROM tb_imagens WHERE img_chave = [ô][Ô] & Chave & [Ô][ô][Ô]
Imporat (Salvar no banco)
SQL = [Ô]INSERT INTO tb_imagens (img_chave, img_imagem,img_nome) VALUES ([ô][Ô] & Chave & [Ô][ô], lo_import([ô][Ô] & App.Path & [Ô]\foto.jpg[Ô] & [Ô][ô])[Ô]
O único inconveniente que anchei foi que ele não salva em rede.. ou seja.. quem faz a importação é o próprio servidor de banco de dados.. portanto acredito que deva criar uma pasta compartilhada e desta forma indicar esta pasta como a pasta padrão da imagem...
Espero ter ajudado...
Antes de mais nada agradecido fico.
Eu apelei com PostgreSql.
Desinstalei tudo do Postgreslq.
Mas vou testar.
Obrigado.
Eu apelei com PostgreSql.
Desinstalei tudo do Postgreslq.
Mas vou testar.
Obrigado.
Tópico encerrado , respostas não são mais permitidas