Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   insertar imagenes en SQLServer (https://www.clubdelphi.com/foros/showthread.php?t=39459)

BANZAI 20-01-2007 06:23:37

insertar imagenes en SQLServer
 
Hola tropa
estoy tratando de insertar imagenes en SQLServer y estoy presentando varios problemas:
1- cuando incorporo una caja de dialogo para imagenes, en el tiempo de ejecucion, ésta no me reconoce las extenciones jpg, quedándome solo bmp.
2-he creado una tabla fotos donde al campo foto lo puse de tipo "image" ya que no he visto el tipo "Blob" del que tanto se habla aqui y donde solo lo he visto en MySQL.
me han comentado que para insertar una foto en SQLServer es necesario convertir la imagen en un arreglo, el cual es el que se inserta en la tabla. Que me pueden comentar?
see you

Neftali [Germán.Estévez] 20-03-2007 11:06:07

Yo he insertado imágenes en SQLServer utilizando ADO y nunca he tenido que convertirlas.
En mi caso utilizo un SQL con parámetros, pero seguro que se puede hacer vía código.

Monto el SQL de la siguiente forma:

Código SQL [-]
  INSERT.... VALUES(1, 'pepe', :imagen);

Luego antes de lanzarla asignas al parámetro la imagen:

Código Delphi [-]
...
  // Buscar el parámetro 
  CommmandParam  :=
     ADOCommand.Parameters.FindParam(NombreParametro);
  // Es una imagen?
  if Assigned(CommmandParam) then begin
    // Asignarlo
    CommmandParam.Assign(Bitmap1);
  end;
  ....
  Lanzar la SQ

argote 11-04-2007 17:38:03

Hola Banzai
 
Deja ver si puedo darte otra forma de resolver tu problema,

En primer lugar para ver los archivos JPG tienes que adicionar en la clausula uses la unit JPEG. Estos archivos si te pueden dar un poco de dolor de cabeza a la hora de cargarlos a la base de datos.

Para cargar una imagen debes tener en cuenta que el campo donde los quieres depositar debe ser de tipo image, aca te pongo un pequeño ejemplo de una tabla creada para que te sirva de ejemplo.

create table imagenes (
imagen image)
go

Una vez tengas esto, vas a tu programa en Delphi y puedes hacer lo siguiente:

1. Creas una conexion a la base de datos, yo siempre lo hago a traves de ADO (TADOConnection).
2. Enlaza una tabla ADO a la tabla que creaste para contener las imagenes (TADOTable).
3. Enlaza esta tabla a un componente TDataSource.
4. En el componente TADOTable abre el Field Editor y selecciona todos los campos, o al menos el campo de la tabla donde vas a guardar la imagen.
5. Supuestamente tendrás un botón en tu aplicación que abra el componente TOpenPictureDialog, así que en el evento OnClick, escribe el siguiente código:

procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
begin
ADOTable1.Insert;
ADOTable1imagen.LoadFromFil(OpenPictureDialog1.FileName);
ADOTable1.Post;
end;
end;


Con estos pasos no deberias tener problemas para guardar la imagen.
Para extraer la imagen a tu aplicación, el componente TDBImage lo hace sin ninguna dificultad y si quieres hacer el proceso inverso, de guardar la imagen de la base de datos al disco duro, puedes utilizar el metodo SaveToFile() del componente TBlobField, te quedaría así:

ADOTable1imagen.SaveToFile('c:\MiImagen.bmp');


La franja horaria es GMT +2. Ahora son las 13:25:15.

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