Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   aplicacion multi-base de datos (https://www.clubdelphi.com/foros/showthread.php?t=72858)

erickperez6 15-03-2011 20:53:21

aplicacion multi-base de datos
 
Saludos,

Pronto iniciare un proyecto y me gustaria que mi aplicacion sea capaz de poder trabajar con multiples base de datos, es decir, al momento de instalar la aplicacion indicarle con cual gestor trabajara y listo, sin tener que modificar nada del programa a nivel de programacion.

Creo que he escuchado que es posible lograrlo con los dbexpress, simplemente cambiandole el conector, pero no estoy muy seguro de lo que hablo, alguien me pudiera orientar mejor?

oscarac 15-03-2011 21:48:13

de poer hacer se se puede..
pero hay que tener mucho cuidado en el tema de las consultas

por ejemplo...

en Sql Se puede Usar Case pero en Access no, quiza no sea el mejor ejemplo que te puedo mencionar.. pero es un ejemplo valido

gatosoft 15-03-2011 22:29:14

completamente de acuerdo con oscarac, la idea es que siempre que escribas una línea de código pienses como afecta tu arquitectura "multi-base de datos"

Por tanto lo mejor (o por lo menos lo que yo recomiendo) es que separes todo el codigo SQL en una capa de acceso a datos...

cuando hablamos de "separar en otra capa" no necesariamente significa utilizar tecnologias "avanzadas" como datasnap o corba... sencillamente hablamos de ordenar tu codigo de tal manera que no dejes regado por ahi todo tu SQL, sino mas bien encapsularlo en uno o mas datamodule's para que sea mantenible.

--- Agregado ---

Se me olvidaba, si puedes utilizar dbExpress como dices, cambiando los parametros iniciales de conexión en tiempo de ejecución, debes tener enc uenta que las opciones de dbExpress son limitadas... puedes tambien hacer este trabajao con ZEOS, ADO, o cualquier otro, inclusive a través de ODBC... que se yo... pero como ya se trató en otro foro, yo recomiendo dbExpress por que es nativo, y es a loq ue le está apostando embarcadero hacia el futuro...


para las consultas, un breve ejemplo:

Código:

Unit1:
-----------
TFactura = class(TObject)
Public
  Function Grabar: Boolean;
end;

Function TFactura.Grabar: Boolean;
begin
  // Validaciones ...
  Datamodule1.GrabarFactura(Self);
end;

Datamodule1:
-----------

Procedure TDatamodule1.GrabarFactura(LaFactura: TFactura);
Begin
  if (strTipoBase = 'SYBASE') then
    strSQL := 'Insert into....';

  if (strTipoBase = 'SQL-SERVER', 'ORCALE') then
    strSQL := 'Insert into....';

  SqlQuery.SQl.text := strSQL;
  SqlQuery.ExecSQL;

End;



La franja horaria es GMT +2. Ahora son las 04:30:09.

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