Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-03-2011
phirum1984 phirum1984 is offline
Miembro
NULL
 
Registrado: ene 2011
Posts: 13
Poder: 0
phirum1984 Va por buen camino
Exclamation Problema para guardar datos desde campo Blob al disco duro

Hola a todos/as.

Tengo una aplicación de mensajería entre usuarios que he programado y que se conecta a una base de datos MySql Online. Lo que quiero hacer es que cuando la aplicación inicie compruebe si hay una versión más nueva (subida previamente por mí), y si la hay descargar el ejecutable de la versión más nueva y de esa forma digamos que el programa se "autoactualiza".

Bien, el procedimiento para subir el archivo binario (.exe) a un campo de tipo LongBlob en la BD MySql ya está implementado y en principio funciona bien, no obstante pongo lo que sería el código (no explícitamente ya que no es relevante):
Código Delphi [-]
var
  qry: TQuery;
  sql: String;
begin
 ...
  sql:='UPDATE Tabla SET Archivo=:file WHERE Condicion';
  qry.Sql.Add(sql);
  qry.ParamByName('file').LoadFromFile('C:\Archivo.exe', ftBlob);
  qry.ExecSQL;
  qry.Close;
end;
El procedimiento es correcto y en la BD puedo ver que efectivamente el campo LongBlob se ha modificado y supuestamente contiene el archivo ejecutable subido, que ocupa unos 2.2Mb, y así se muestra en la misma BD.


El problema viene cuando intento descargar el archivo de la BD y guardarlo en el disco duro, siempre me descarga mi archivo ejecutable pero de tamaño 32Kb y que lógicamente no funciona. En el caso de que suba un archivo de menos de 32Kb, lo descarga bien y funciona correctamente. Recuerdo que en la propia BD MySql el archivo está supuestamente bien guardado y ocupa 2.2Mb.
El código usado es el siguiente:
Código Delphi [-]
var
  qry: TQuery;
  sql: String;
begin
 ...
  sql:='SELECT Archivo FROM Tabla WHERE Condicion';
  qry.Sql.Add(sql);
  qry.Open;
  TBlobField(qry.FieldByName('Archivo')).SaveToFile(C:\Descarga\Archivo.exe);
  qry.Close;
end;
No hay errores y de hecho me genera la descarga pero como ya he dicho de un máximo de 32Kb, creo que es como si hubiera algún límite o similar, pero la BD no lo impone ya que la propia BD me dice que el campo LongBlob ocupa 2.2Mb.

Por favor, ¿alguna sugerencia, idea o alguna otra forma de hacerlo?.
Si necesitais cualquier información adicional o no entendeis alguna cosa por favor pedidmelo.

De antemano, muchas gracias y un saludo.

Última edición por phirum1984 fecha: 15-03-2011 a las 14:11:55.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Quitar proteccion para guardar en una particion del disco duro ingabraham Varios 6 01-02-2011 15:56:43
Problema:Carpetas en la particion de mi disco duro jbautista Varios 5 05-11-2010 22:49:08
Problema con Windows Xp o tal vez Disco Duro vick Windows 2 07-12-2006 13:54:02
Problema con EAccessViolation en Disco Duro salvica OOP 6 03-09-2004 22:39:21
datos del disco duro seduerey Varios 2 01-07-2003 22:13:09


La franja horaria es GMT +2. Ahora son las 14:22:47.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi