Guardar Imagen en PostgreSQL

Iniciado por 9ttnix, 25 Septiembre 2016, 11:27 AM

0 Miembros y 1 Visitante están viendo este tema.

9ttnix

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:


  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?
The knowledge is power


9ttnix

Hola okik

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


rs("Foto").AppendChunk arrImagen()


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

Alguna pista amigos?
Gracias
The knowledge is power

okik

#3
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
Microsoft ActiveX Data Objects 2.8

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


mientras que el que yo tengo en W7 es:
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




MCKSys Argentina

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


okik

#5
Cita de: MCKSys Argentina en 26 Septiembre 2016, 23:14 PM
Hola!

Fijate si esta solucion 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.

9ttnix

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.
The knowledge is power