Ir al contenido


Foto

Update de campo BLOB con sentencia SQL


  • Por favor identifícate para responder
32 respuestas en este tema

#1 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 18 diciembre 2009 - 12:12

Hola a todos chicos y chicas, aquí ando con una nueva preguntilla...

Tengo un campo BLOB que contiene información pero es puro texto y lo que estoy intentando hacer es una sentencia SQL para hacer un Update del contenido del campo...

Hasta ahorita llevo esto:



sql
  1. UPDATE TABLA
  2. SET CAMPO_BLOB = ???????
  3. WHERE CONDICION



Hice el intento de hacerlo como si fuera un campo de tipo String y entrecomillar (nuevo verbo :p) la cadena que quiero colocar como valor del campo y aunque me dice que la sentencia ha sido ejecutada correctamente, no veo los cambios en el campo :(

Saludox y gracias a todos :D !
  • 0

#2 razadi

razadi

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 681 mensajes
  • LocationMéxico D.F.

Escrito 18 diciembre 2009 - 12:18

Amiga Fenareth lamento decirte que eso que quieres hacer no se puede en firebird, porque lo estas tratando de hacer en firebird, verdad?

Pues lamento decilucionarte, no se puede, en otra DB si se podría como en MySQL si es factible.

Saludos
  • 0

#3 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 18 diciembre 2009 - 12:25

Amiga Fenareth lamento decirte que eso que quieres hacer no se puede en firebird, porque lo estas tratando de hacer en firebird, verdad?

Pues lamento decilucionarte, no se puede, en otra DB si se podría como en MySQL si es factible.

Saludos


Pues si, efectivamente, el show lo quería hacer en Firebird pero pues ni modo :p, tendré que inventar otra solución jejeje...

Saludox ! :D

P.D. A ver si en mi trabajo ya se consiguen otra BD menos chafa  :lipsrsealed: :angel: jejeje


  • 0

#4 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 18 diciembre 2009 - 01:43

Hola Gaby,
No he probado actualizar el valor de un BLOB, pero me resulta extraño que no se pueda.

Quizá podría hacerse mediante un parámetro y que éste guarde/lea un stream.
La idea es esta:



sql
  1. UPDATE tabla
  2. SET campo_blob :param_blob
  3. WHERE ....



Y en Delphi algo como:


delphi
  1. Query1.ParamByName(param_blob).LoadFromStream(...)
  2. Query1.ExecSql;



Por lo general los campos BLOB no se actualizan, aunque hay excepciones. Quizá podrías, si es que no resulta, probar alguna otra alternativa.

Saludos,
  • 0

#5 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 18 diciembre 2009 - 01:53

Gracias amigo Delph !, lo que sucede es que no quiero hacer ninguna interacción con Delphi si no hacer la consulta de actualización directa en la BD y hacer ese cambio :p

Saludox ! :D
  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 18 diciembre 2009 - 03:05

Hola

dale una leída a SET BLOBFILE

"SET BLOBFILE is a special extension of script language that allows insert or update blob values via script."

Salud OS
  • 0

#7 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 18 diciembre 2009 - 03:22

Hola

Intenté hacerlo con una foto pero no la colocó correctamente, seguro es el valor que le he puesto

SET NAMES NONE;



sql
  1. SET BLOBFILE 'C:\Fotos\yomero.jpg';
  2. INSERT INTO CLIENTE(ID_CLIENTE,NOMBRE,APELLIDO,FOTO)
  3. VALUES (3,'egostar','delphiaccess',:h00000000_7FFFFFFF);



Se ejecuto correctamente pero el campo no se grabo correctamente en esta parte :h00000000_7FFFFFFF :(

Salud OS
  • 0

#8 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 18 diciembre 2009 - 03:34

Leamos y probemos ! (y)... yo les cuento :p

Saludox y Graxiax ! :D
  • 0

#9 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 18 diciembre 2009 - 03:38

Es la primera vez que "escucho" hablar de SET BLOBFILE... De lo que puedo entender del enlace que pones amigo se trata de una extensión al lenguaje que incorpora IBExpert, más no veo que indique que forme parte del lenguaje estándar de Firebird.

Tendría que darle una buena leída al tema.

Saludos,
  • 0

#10 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 18 diciembre 2009 - 03:44

Creo saber donde está el error amigo... fíjate que tu instrucción SQL le pusiste dos puntos antes de la dirección de memoria ;). Además hay que considerar si has pasado bien el tamaño de la imagen.

Saludos,
  • 0

#11 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 18 diciembre 2009 - 03:49

Es la primera vez que "escucho" hablar de SET BLOBFILE... De lo que puedo entender del enlace que pones amigo se trata de una extensión al lenguaje que incorpora IBExpert, más no veo que indique que forme parte del lenguaje estándar de Firebird.

Tendría que darle una buena leída al tema.

Saludos,


Puede ser amigo, aunque si tienes Firebird puedes utilizar IBExpert para ejecutar un script

Salud OS
  • 0

#12 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 18 diciembre 2009 - 03:51

Creo saber donde está el error amigo... fíjate que tu instrucción SQL le pusiste dos puntos antes de la dirección de memoria ;). Además hay que considerar si has pasado bien el tamaño de la imagen.

Saludos,


Yo creo que fué la forma como creé el campo, solo lo hice como blob pero parece que hay que asignarle algo para que sea o bien imagenes o campo memo.

Salud OS
  • 0

#13 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 18 diciembre 2009 - 03:52

Voy a hacer la prueba amigo.

Saludos,
  • 0

#14 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 18 diciembre 2009 - 04:00

Una preguntonta... ¿como le hago, fácilmente para saber el tamaño, en "hexadecimal"?
Me cuesta entenderle.

Saludos,
  • 0

#15 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 18 diciembre 2009 - 04:05

Una preguntonta... ¿como le hago, fácilmente para saber el tamaño, en "hexadecimal"?
Me cuesta entenderle.

Saludos,


Pues en toda la documentacion que encontré al respecto del SET BLOBFILE manejan esa que puse

Salud OS
  • 0

#16 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 18 diciembre 2009 - 04:30

Ummm,
Bueno, por lo que le entiendo hay que indicarle la posición de memoria correcta amigo.
Hace ratito he hecho una prueba con el supuesto tamaño de la imagen y ¡pum! me protesta indicando que la columna no corresponde a ninguna tabla. Por lo que estoy leyendo, cuando se define un blob hay que tener en cuenta que internamente los primeros 8 bytes se emplean para un ID a modo de identificarlo.

Aquí la info sobre BLOBs

Entonces quizá si le sumo a la dirección estos 8 bytes...  *-)
Ya aviso.

Saludos,
  • 0

#17 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 18 diciembre 2009 - 04:35

No hay caso amigo, no le encuentro la vuelta :(
Yo que Fena me voy por lo fácil y le mando con Delphi :D ¡que importa si es por única vez!

Saludos,
  • 0

#18 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 18 diciembre 2009 - 04:49

Ummm,
Bueno, por lo que le entiendo hay que indicarle la posición de memoria correcta amigo.
Hace ratito he hecho una prueba con el supuesto tamaño de la imagen y ¡pum! me protesta indicando que la columna no corresponde a ninguna tabla. Por lo que estoy leyendo, cuando se define un blob hay que tener en cuenta que internamente los primeros 8 bytes se emplean para un ID a modo de identificarlo.

Aquí la info sobre BLOBs

Entonces quizá si le sumo a la dirección estos 8 bytes...  *-)
Ya aviso.

Saludos,


Lo que pasa amigo es que lo quieres hacer con un query normal, esto debe hacerse en un Script.

Salud OS
  • 0

#19 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 18 diciembre 2009 - 05:31

Pues te digo que se la diferencia entre Query y Script, asi que por ese lado amigo no es el problema te lo aseguro. A mi el Script no me furula. Y es parecido a ese... únicamente varía en el nombre de los campos, la tabla y el valor hexadecimal.

Ya no recuerdo el nombre del error, pero más o menos era que el nombre de la columna no correspondía al campo o algo así. Y me señalaba justito el valor hexadecimal como el error.

No he vuelto a intentarlo. Mejor lo hago cuando tenga la mente fresca.

Saludos,
  • 0

#20 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 18 diciembre 2009 - 10:34

Se que tal vez es muy prematuro preguntar pero... ¿Alguna novedad?
¿Tendrá algo que ver, como sospechabas Eliseo, el tema del subtype? *-)
  • 0




IP.Board spam blocked by CleanTalk.