Estimado aunque sigo siendo un novato ... te cuento que es lo que suelo hacer yo independiente del motor de base de datos que utilice.
Comienzo realizando una clase base que me va hacer de interfaz entre el motor y la aplicación en donde creo una conexion y un comando y/o consulta. Hasta ahi esta todo bien pero la clave esta en que sobre cargo las funciones para que me den el resultado que necesito. Con el ejemplo me explico mejor además aclaro que utilizo los componentes Unidac que me conectan con cualquier gestor.
Código Delphi
[-]
Unit cConexion;
Uses System.SysUtils, Unidac;
interface
type
TConexion=class
Private
ConectorBD:TUniConnection;
ComandoSQL:TUniQuery;
Public
Contructor Create;
Destructor Destroy; override;
Protected
function EjecutarSQL(SentenciaSQL:String):Boolean; Overload;
function EjecutarSQL(SentenciaSQL:WideString):Integer; Overload;
end;
implementation
destructor TConexion.Destroy;
begin
if ConectorBD.Active then ConectorBD.Close;
if Comando.Active then Comando.Close;
FreeAndNil(ConectorBD);
FreeAndNil(Consulta);
inherited;
end;
constructor TConexion.Create;
begin
inherited;
end;
function TConexion.EjecutarSQL(Sentencia:String):Boolean;
begin
try
ConectorBD.Open;
Comando.SQL.Text:=SentenciaSQL;
Comando.ExecSQL;
Result:=True;
except
Result:=False;
end;
end;
Esta clase te sirve para que otros objetos hereden estos funciones sobrecargadas. Por ejemplo otra clase en donde registre un automovil:
Código Delphi
[-]
Unit cConexion;
Uses System.SysUtils, cConexion;
interface
type
TAutomovil=class(TConexion)
private
public
function Insertar:Boolean;
function Editar:Boolean;
function Eliminar:Boolean;
published
property
end;
implementation
function TAutomovil.Insertar:Boolean;
begin
Result:=EjecutarSQL('INSERT .....');
end;
Lo que hace es simplemente ejecutar la instruccion en SQL y te va devolver un boolean para ver si realizo con exito la transacción.
Espero haber sido un poco explicativo con el ejemplo porque medio que no sirvo para explicar estas cosas