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 21-08-2010
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Consejos Firebird con Delphi 2010

Hola muchachos, actualmente tengo una aplicacion funcionando en visual basic e interbase 7 desde ya unos años, las 24 hs. del dia los 365 dias del año sin descansar y jamas tuve ningun problema. Bueno la estoy migrando a Delphi y tengo Interbase 2009 version free. El tema es ¿Puedo usar Firebird y que me brinde la misma seguridad de interbase, a seguridad me refiero a tranquilidad de que lo que tengo es bueno y no se va a caer (en condiciones normales)?
Estoy con los componentes IBDAC y usando Stored Procedures para todo.
Espero consejos sabios de gente con mas experiencia. Saludos y desde ya muchas gracias!!!!
Responder Con Cita
  #2  
Antiguo 21-08-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por waly2k1 Ver Mensaje
[..] tengo Interbase 2009 version free [..]
Hola, waly2k1, no existe ninguna versión free de interbase, todas son de pago. Lo que sí existe es la versión de prueba para desarrolladores, o sea, para tú programar, pero luego debes comprar las licencias para instalarlas en los "servidores/clientes" de tus clientes finales.
Cita:
Empezado por interbase
Non-expiring free edition for development use.
Y en relación a tu pregunta, por supuesto, con firebird no tendrás ningún problema, en realidad es más avanzada que interbase, tienes más posibilidades de versiones, sistemas operativos, multiproceso, etc.
Además es libre y gratis totalmente.
Responder Con Cita
  #3  
Antiguo 21-08-2010
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Gracias...

Muy bien Casimiro, muchas gracias por tu pronta respuesta
ya empezare a usar Firebird entonces, o al menos a tenerla mas en cuenta
hace un tiempo hice un intento de usarla, pero tuve problemas con los blob de imagenes que no sabia que dialecto usar, entonces descarte y segui con MySQL.
Bueno nuevamente gracias y te consulto despues algunas dudas en cuanto a dialecto, etc.
un abrazo!
Walter
Responder Con Cita
  #4  
Antiguo 13-09-2010
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Question....

Hola Casimiro,
Tengo en mi codigo esta linea que inserta una imagen en una tabla de una bd, ya sea access, mysql, sqlserver y nose que otra. Pero en Firebird 2.1 no me funciona. No da error, pero no hace nada
Código:
(Data.qryCLA.FindField('IMG_RPTFINAL') AS TBlobField).LoadFromFile(sPIC);
Data.qryCLA es una consulta de lectura/escritura, probé varios metodos que encontre en la web y en todos pasa lo mismo, La consulta está bien, está en edicion, probé con begin y commit transaction y todo lo que se me hubiera ocurrido, pero no dio resultado. Con el EMS-IBManager puedo actualizar perfectamente en ese campo la imagen que quiera.
El campo es de Tipo Blob, tamaño de segmento=20 y subtipo=0.

Si tienes un ejemplo valido o el link te estaria muy agradecido. Si lo deseas
podria postearte todos los ejemplos que no me funcionan, pero no creo sea
necesario

Bueno, es todo por el momento. Desde ya muchas gracias por tu tiempo!!!
Saludos,
Walter
Responder Con Cita
  #5  
Antiguo 13-09-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hola, con esa línea de código únicamente no puedo decirte si todo está bien o hay algo mal

Puedes hacer una búsqueda por clubdelphi, es un tema que se ha tratado infinidad de veces. Por ejemplo... aquí.
Responder Con Cita
  #6  
Antiguo 13-09-2010
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Solucionado

Ya lo solucione, muchas gracias!
Lo hice desde un Stored Procedure
Posteo por las dudas el codigo por si a alguien le sucede lo mismo,
es un poco mas largo que una simple linea, pero funciona.

Código:
var
    SP:TIBCStoredProc;
begin
    SP := TIBCStoredProc.Create( Self );
    SP.StoredProcName := 'SP_LOGO_UPD';
    SP.Prepare;
    SP.ParamByName( 'IMG_RPTFINAL' ).LoadFromFile( sPICT, ftBlob );
    Data.IBCTran.StartTransaction;
    SP.ExecProc;
    Data.IBCTran.Commit;
Saludos y gracias por tu tiempo!!!
Walter
Responder Con Cita
  #7  
Antiguo 13-09-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por waly2k1 Ver Mensaje
Código:
var
    SP:TIBCStoredProc;
begin
    SP := TIBCStoredProc.Create( Self );
    SP.StoredProcName := 'SP_LOGO_UPD';
    SP.Prepare;
    SP.ParamByName( 'IMG_RPTFINAL' ).LoadFromFile( sPICT, ftBlob );
    Data.IBCTran.StartTransaction;
    SP.ExecProc;
    Data.IBCTran.Commit;
Saludos y gracias por tu tiempo!!!
Walter

No olvides liberar la memoria del SP!!!

Código:
var
  SP:TIBCStoredProc;
begin
  try
    SP := TIBCStoredProc.Create( Nil );
    SP.StoredProcName := 'SP_LOGO_UPD';
    SP.Prepare;
    SP.ParamByName( 'IMG_RPTFINAL' ).LoadFromFile( sPICT, ftBlob );
    Data.IBCTran.StartTransaction;
    SP.ExecProc;
    Data.IBCTran.Commit;
  finally
    SP.Free;   //   <-----
  end;
end;

Última edición por Casimiro Notevi fecha: 21-09-2010 a las 16:18:29.
Responder Con Cita
  #8  
Antiguo 13-09-2010
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Liberar memoria?

Nunca lo hice y no se me hubiera ocurrido
Estoy finalizando mi aplicacion y 100% SP, pero nunca liberaba la memoria utilizada.
Muchas gracias nuevamente!

Saludos,
Walter
Responder Con Cita
  #9  
Antiguo 13-09-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues no lo olvides, es primordial.
Los objectos que nosotros creamos... nosotros lo liberamos.
Los objetos que crea delphi... los libera delphi.

Tu programa irá cogiendo cada vez más y más memoria, cada vez ocupará más en la memoria, surgirán problemas de punteros a memoria direccionada, ¡¡¡crash!!!
¿por qué me sale "acces violation etc...? por eso.
Responder Con Cita
  #10  
Antiguo 21-09-2010
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Código Delphi [-]
SP := TIBCStoredProc.Create( Self );
Cuando creas un componente con un Owner (Self) se destruye cuando se destruye el owner.

Mas eficiente es crear el objeto sin owner :
Código Delphi [-]
SP := TIBCStoredProc.Create(nil);
En este caso hay q destruirlo. Sino AV asegurada
Código Delphi [-]
SP.Free;
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #11  
Antiguo 21-09-2010
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Aqui se explica pq hay q utilizar mayoritariamente el owner nil.

Por cierto, si tienes Delphi2010 puedes usar los dbExpress con el driver de Firebird q viene incluido..
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #12  
Antiguo 21-09-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cierto, se me olvidó mencionar que si se crea con (self) no hace falta liberar la memoria porque lo hace el (owner).
Responder Con Cita
  #13  
Antiguo 23-09-2010
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Cierto, se me olvidó mencionar que si se crea con (self) no hace falta liberar la memoria porque lo hace el (owner).
El caso es q no es eficiente crear los objetos con Self como owner como se explica en el articulo mencionado arriba. Mejor con nil y liberarlos inmediatamente..
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #14  
Antiguo 23-09-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Delfino Ver Mensaje
[..] Mejor con nil y liberarlos inmediatamente..
Pues sí, mejor tomar el control
Responder Con Cita
  #15  
Antiguo 24-09-2010
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Cita:
Empezado por Delfino Ver Mensaje
Aqui se explica pq hay q utilizar mayoritariamente el owner nil.

Por cierto, si tienes Delphi2010 puedes usar los dbExpress con el driver de Firebird q viene incluido..
Intente usar dbExpress pero maaal, un dblockupcomboBox por ejemplo me
cargaba mas de 5 veces el mismo item y al hacer click abortaba todo, la
consulta era un simple select de una tabla, o sea no habia records repetidos.
Y asi vi varios casos donde no funcionaba o funcionaba muy mal que es peor.
Luego lei por ahi que estos objetos no funcionaban bien con versiones de
firebird superiores a la 2.1. Asi que buscando encontre estos que andan muy
bien gracias a Dios!. Yo vengo de MySQL con Zeos y no tengo quejas, pero
queria algo mas nuevo o quizas mas especifico para Firebird que Zeos.

Muchas gracias a todos por los consejos que son enormemente recibidos!!!
Walter
Responder Con Cita
  #16  
Antiguo 25-09-2010
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Casimiro, quizás sea un error, o quizás me olvido de algo, pero, ¿el crear el objeto no debería estar fuera del try?
Código Delphi [-]
var
  SP:TIBCStoredProc;
begin
  SP := TIBCStoredProc.Create( Nil );
  try
    SP.StoredProcName := 'SP_LOGO_UPD';
    SP.Prepare;
    SP.ParamByName( 'IMG_RPTFINAL' ).LoadFromFile( sPICT, ftBlob );
    Data.IBCTran.StartTransaction;
    SP.ExecProc;
    Data.IBCTran.Commit;
  finally
    SP.Free;   //   <-----
  end;
end;

La razón es que si hay un error al crear ese objeto, en tu código iría al finally a destruirlo y muy posiblemente dará otra excepción porque no se pudo destruir (al no estar totalmente creado) ¿no?
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #17  
Antiguo 25-09-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues sí, por lógica, si se va a crear un objeto, será conveniente hacerlo fuera del try .. finally. Tienes razón.
Responder Con Cita
  #18  
Antiguo 26-09-2010
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Cita:
Empezado por waly2k1 Ver Mensaje
Intente usar dbExpress pero maaal
Lo hiciste con ClientDataset o con SQLDataset directamente?
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #19  
Antiguo 27-09-2010
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Cita:
Empezado por Delfino Ver Mensaje
Lo hiciste con ClientDataset o con SQLDataset directamente?
Hum no recuerdo...
pero si, fallaba sin sentido, entonces opte por los IBDAC

Ahora, que es mejor?, o sea la mejor opcion para trabajar con Firebird, si es free$ mejor aun. El tema es que sean objetos actualizables frecuentemente.
O bien como aconsejas el uso de dbExpress?.
Sino buscare despues ejemplos, pero como les decia antes, no tengo ni un poco de XP en Firebird, trabaje antes con interbase y anduvo muy bien, sql server, mysql, etc. Recien veo firebird y va muy bien la cosa, estoy muy confome realmente.
Saludos y muchas gracias muchachos!!!
Walter
Responder Con Cita
  #20  
Antiguo 28-09-2010
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Poder: 18
mcs Va por buen camino
Cita:
Empezado por Lepe Ver Mensaje
Casimiro, quizás sea un error, o quizás me olvido de algo, pero, ¿el crear el objeto no debería estar fuera del try?
Código Delphi [-]var SP:TIBCStoredProc; begin SP := TIBCStoredProc.Create( Nil ); try SP.StoredProcName := 'SP_LOGO_UPD'; SP.Prepare; SP.ParamByName( 'IMG_RPTFINAL' ).LoadFromFile( sPICT, ftBlob ); Data.IBCTran.StartTransaction; SP.ExecProc; Data.IBCTran.Commit; finally SP.Free; // <----- end; end;


La razón es que si hay un error al crear ese objeto, en tu código iría al finally a destruirlo y muy posiblemente dará otra excepción porque no se pudo destruir (al no estar totalmente creado) ¿no?
Aquí no daría error, ya que la creación del objecto SP es anterior al bloque try...finally.
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
¿''?reportmanager y delphi 2010 VCL con firebird 2.1 UTF8 JXJ Varios 0 19-08-2010 19:22:03
Delphi 2010 - Firebird o es tiempo de cambiar? jourdan Conexión con bases de datos 10 04-08-2010 00:43:50
Firebird, Mysql y Delphi 2010 tec Varios 3 16-04-2010 15:34:51
Consejos para Delphi 2007 Win32 sysmar Varios 6 08-03-2008 06:57:51
Consejos para empezar con firebird seoane Firebird e Interbase 21 22-03-2007 05:14:33


La franja horaria es GMT +2. Ahora son las 17:55:22.


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