Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: 9ttnix en 25 Septiembre 2016, 11:27 am



Título: Guardar Imagen en PostgreSQL
Publicado por: 9ttnix en 25 Septiembre 2016, 11:27 am
Hola amigos

He intentado guardar una imagen en postgresql desde vb6 y no consigo grabar. Estoy usando PostgreSQL 9.3.14, enmi tabla tengo el campo foto tipo bytea, lei que este era el campo para almacenar imagenes.

Estoy usando estas lineas:

Código:
  Dim lRst  As ADODB.Recordset
  Dim lImg  As ADODB.Stream
 
  Set lRst = New ADODB.Recordset
  Set lRst.ActiveConnection = m_cnn.Conexion
  lRst.Open "select * from tb_imagenes", , adOpenDynamic, adLockOptimistic
  Set lImg = New ADODB.Stream
  lImg.Type = adTypeBinary
  lImg.Open
  lImg.LoadFromFile m_ruta_imagen
  lRst.AddNew
  lRst!id = m_id + 1
  lRst.Fields("foto").Value = lImg.Read    'Aqui me salta error
  lRst.Update
  lRst.Close
  Set lRst = Nothing
  lImg.Close
  Set lImg = Nothing

Alguna pista para solucionarlo?


Título: Re: Guardar Imagen en PostgreSQL
Publicado por: okik en 25 Septiembre 2016, 17:52 pm
Ado Stream - Almacenar y recuperar imágenes (http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/351-ado-stream-imagenes.htm)

Descargar ejemplo [desde www.recursosvisualbasic.com] (http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/zip/ado-stream-leer-grabar-imagen.zip)


Título: Re: Guardar Imagen en PostgreSQL
Publicado por: 9ttnix en 26 Septiembre 2016, 17:11 pm
Hola okik

Gracias por responder pero ya habia probado ese ejemplo igual no me funciona.
Estoy intentando usar

Código:
rs("Foto").AppendChunk arrImagen()

pero igual tambien me da error 3219 la operacion no esta permitida en este contexto

Alguna pista amigos?
Gracias


Título: Re: Guardar Imagen en PostgreSQL
Publicado por: okik en 26 Septiembre 2016, 23:03 pm
ay amigo, amigo  por que no funcionará   :D

pues te explico.

yo ejecuté el código ayer y tampoco me funcionaba de echo tuve problemas. Lo ejecuté en el PC y aquí tengo W7 en una partición, con VS2012. Estuve añadiendo referencias de base de datos. Esto me provocó una serie de problemas, relacionados con ntdll.dll y tuve que restaurar a un punto anterior, porque no supe como arreglarlo.

Creo que se añadieron o se modificaron claves de registro y se me producían errores en Internet Explorer y en Visual Studio 2012, buen este es que ni se podía trabajar.

Hoy he ejecutado el código en Windows XP, después de instalarle el VB6. Y funciona a la perfección.

Así que la razón que no funcione puede ser porque usas Windows 7/8/10 o porque tengas instalado VS.NET.   No se qué razón de las dos puede ser. Todos los sistema que tengo, tengo metido el VS.NET, excepto en Linux y XP que lo tengo en máquina virtual.  Así que me quedo con la duda. La razón exacta que produce esta incompatibilidad no la se.

El caso es que el código funciona y la razón que a ti no te funcione puede ser la misma...



El código del enlace, el que está en el ZIP, usa
Código:
Microsoft ActiveX Data Objects 2.8

usa la librería:
Código:
C:\Program Files (x86)\Common Files\System\ado\msado15.dll
y la versión del archivo original es:
Código:
2.81.1132.0

mientras que el que yo tengo en W7 es:
Código:
6.1.7601.17514

Esta actualización puede que sea el problema.

Probaría sustituir la nueva por a vieja a ver si en W7 me funciona el código, pero después de lo de ayer, no me arriesgo XD





Título: Re: Guardar Imagen en PostgreSQL
Publicado por: MCKSys Argentina en 26 Septiembre 2016, 23:14 pm
Hola!

Fijate si esta solucion (http://stackoverflow.com/questions/29036160/insert-retrieve-image-in-postgresql-database-form-vbnet) te sirve.

Saludos!


Título: Re: Guardar Imagen en PostgreSQL
Publicado por: okik en 26 Septiembre 2016, 23:27 pm
Hola!

Fijate si esta solucion (http://stackoverflow.com/questions/29036160/insert-retrieve-image-in-postgresql-database-form-vbnet) te sirve.

Saludos!

Fíjate que el lo quiere hacer en VB6. El código que le das es para NET.  Si usa NET igual le vale  :P y teniendo en cuenta lo de la incompatibilidad quizás sea mejor que use NET.


Título: Re: Guardar Imagen en PostgreSQL
Publicado por: 9ttnix en 27 Septiembre 2016, 00:12 am
Hola okik

Probe cambiando a 2.5 el ado y nada, debe ser lo que dices el OS o el VS.Net como tengo Win10 y VS2015CE pero bueno use otra solucion y es guardar la imagen como cadena en la bd y luego la reconstruyo desde la cadena.

Luego lo veo con mas trankilidad porque estoy contra el tiempo.
Igual comento la solución en breve

Gracias amigos.