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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-12-2008
petete2008 petete2008 is offline
Miembro
 
Registrado: oct 2008
Posts: 109
Poder: 16
petete2008 Va por buen camino
¿Como cargar imagenes en SQL Server?

Hola, escribo en este foro por que quería saber como puedo hacer para cargar una imagen en una bse de datos en SQL Server, la situacion es la siguiente:

INSERT INTO TABLA_IMAGEN (FOTO) VALUES (??????)

el campo "FOTO" de "TABLA_IMAGEN" es de tipo IMAGE tipo de datos para cargar imagenes tengo entendido.

necesito saber que valor es el que tengo que colocar para que se cargue la imagen en la BD
he visto en foros que sugieren cargar solo la ruta si tienen un ejemplo completo de como hacer ese insert tambien se lo agradecería

le agradezco oa quien me pueda responder lo necesito.
Uso delphi 7.
Gracias
Responder Con Cita
  #2  
Antiguo 02-01-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Puedes utilizar una SQL con parámetros para añadir las imágenes.
Suponiendo que tengas una tabla con los campos:
* Entero
* Cadena
* Imagen

Coloca un TImage y carga un Bitmap en él.
Crea un ADOQuery y en la SQL coloca lo siguiente:
Código SQL [-]
INSERT INTO Tabla (entero, cadena, imagen) VALUES (:entero,:cadena,:imagen)

Puedes insertar un nuevo registro con este código:

Código Delphi [-]
  qry1.Parameters.FindParam('entero').Value := 25;
  qry1.Parameters.FindParam('cadena').Value := 'valor de la cadena';
  // paramero de imagen
  param := qry1.Parameters.FindParam('imagen');
  param.Assign(img1.Picture.Graphic); 
  qry1.ExecSQL;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 02-01-2009
petete2008 petete2008 is offline
Miembro
 
Registrado: oct 2008
Posts: 109
Poder: 16
petete2008 Va por buen camino
y puedo decirle que la imagen está en c:\imagenes\image.jpg y que la coja directamente de allí en vez de cargarla?
Ademas mi idea es que tambien pueda adjuntar ficheros txt, pdf, word, etc... y no sólamente imágenes.
Graciass por la respuesta, me has sacado de muchas dudas que tenia
Feliz año
Responder Con Cita
  #4  
Antiguo 02-01-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.272
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por petete2008 Ver Mensaje
y puedo decirle que la imagen está en c:\imagenes\image.jpg y que la coja directamente de allí en vez de cargarla?
Ademas mi idea es que tambien pueda adjuntar ficheros txt, pdf, word, etc... y no sólamente imágenes.
En ese caso (más genérico) es mejor trabajar directamente con Streams para cualquier tipo de fichero y así los cargas directamente de disco.
Seguramente en tu tabla deberás tener algun campo para almacenar el nombre o el tipo del fichero original, para así después poderlo recuperar correctamente.

Para guardar un fichero en un campo de una tabla (TADOTable en este caso, con un campo definido como IMAGE) puedes usar esto:

Código Delphi [-]
var
  bs: TStream;
begin
  // editar el registro actual
 tbl1.Edit;
 // Acceder al campo BLOB (el campo IMAGE se llama blob)
 bs := tbl1.CreateBlobStream(tbl1.FieldByName('blob'), bmWrite);
 // Cargar el fichero de disco 
 TADOBlobStream(bs).LoadFromFile('c:\temp\fichero.pdf');
 // Al hacer el Free directamente se graba el campo
 bs.Free;

Para volver a guardar ese campo en disco (fichero) algo como esto:

Código Delphi [-]
var
  bs: TStream;
begin
  // Apuntar al campo BLOB (registro actual)
  bs := tbl1.CreateBlobStream(tbl1.FieldByName('blob'), bmReadWrite);
  // Grabar a disco
  TADOBlobStream(bs).SaveToFile('c:\temp\fichero_out.pdf');
  // liberar
  bs.Free;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 05-01-2009
petete2008 petete2008 is offline
Miembro
 
Registrado: oct 2008
Posts: 109
Poder: 16
petete2008 Va por buen camino
var
fs : Tfilestream;
bs: TStream;

begin
ADOQuery1.active:=false;
ADOQuery1.SQL.Clear;
Adoquery1.SQL.Add('INSERT INTO FICHEROS (idempresa,Archivo) VALUES (:idempresa,:idnumero,:Archivo)');
Adoquery1.Parameters.FindParam('idempresa').Value:=1;

bs := Adoquery1.CreateBlobStream(Adoquery1.FieldByName('Archivo'),bmWrite);
TADOBlobStream(bs).LoadFromFile('c:\VICENTE.txt');

Adoquery1.ExecSQL;


me dice que el campo Archivo no existe pero si que existe ya que si hago un Adoquery1.Parameters.FindParam('Archivo').Value:='dfsfa'; me lo inserta.

¿que puede estar pasando?
Gracias
Responder Con Cita
  #6  
Antiguo 05-01-2009
petete2008 petete2008 is offline
Miembro
 
Registrado: oct 2008
Posts: 109
Poder: 16
petete2008 Va por buen camino
encontre la solucion

Adoquery1.Parameters.ParamByName('Archivo').LoadFromFile('c:\VICENTE.jpg',ftBlob);
Responder Con Cita
Respuesta



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
como cargar varias imagenes en varios image1.picture kurono Varios 2 15-01-2008 01:08:26
Como puedo Cargar una Grilla con Imagenes de una Base de Datos.???? DANNY777 Gráficos 3 17-05-2007 23:15:30
cargar imagenes de bdd dimitri PHP 1 20-03-2007 10:23:36
Cargar imágenes david.rguez Gráficos 0 21-11-2006 13:34:51
Como cargar Imagenes en un ListView johurgi Varios 0 16-08-2006 12:07:53


La franja horaria es GMT +2. Ahora son las 18:19:14.


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