Agora a brincadeira é:
Temos que dar vida as interfaces que foram definidas no artigo anterior.
E para fazer isso estou postando o código para vocês.
 
unit uBDEConnection;
 
interface
 
{
Autor.: Renato Correia de Matos
Email.: reneuece@ig.com.br or renato@istudar.com.br
Data..: 25/03/2009
Obs...: Esse artigo faz parte do grupo www.istudar.com.br e foi
        criado por mim para ajudar a galerinha a se livrar ou se
        tornar reféns de drivers de conexão. Por favor! Mantenham
        essas informações. Vocês poderão usar as dicas aqui contidas
        em seus projetos sem qualquer custo. Apenas mantenham minhas credencias.
Email:. reneuece@ig.com.br or renato@istudar.com.br

Author: Renato Correia de Matos
Email.: reneuece@ig.com.br or renato@istudar.com.br
Date..: 03/25/2009
Obs...: I created this article to help any programmer to be free from any connection driver.
        It is published on www.istudar.com.br. You can use this article in your projects
        without any costs. I would like you just to put my name or email on it.
}
 
uses uConnection, // unidade que contem as interfaces
     Classes, DB, DBTables;
type
  // camada para controle da conexão
  TBDEConn = class(TDatabase, IConnection)
  public
    function getComponent: TComponent;
    // controle de conexão
    procedure Open;
    procedure Close;
    function isConnected: boolean;
    // controle de transação
    procedure StarTransaction;
    procedure Commit;
    procedure Rollback;
    function InTransaction: Boolean;
    // criador de queries
    function CreateQuery: IQuery;
    // parâmetros de conexão
    function getParams: TStrings;
    function getFramework: TFramework;
    property Params: TStrings read getParams;
  end;
  // camada para execução de consultas
  TBDEQuery = class(TQuery, IQuery)
  private
    FoConn: IConnection;
  public
    function Conn: IConnection;
    // controle de conexão
    procedure Open;
    procedure Close;
    function isActive: boolean;
    // execução de comandos
    function ExecSQL: Integer;
    function DataSet: TDataSet;
    // comandos sql
    function getSQL: TStrings;
    procedure setSQL(Value: TStrings);
    function getParams: TParams;
    function getFields: TFields;
    function FieldByName(Name: String): TField;
    property SQL: TStrings read getSQL write setSQL;
    property Fields: TFields read getFields;
  end;
implementation
{ TBDEConn }
procedure TBDEConn.StarTransaction;
begin
  if not InTransaction then
    StarTransaction;
end;
function TBDEConn.getFramework: TFramework;
begin
  result := fwBDE;
end;
procedure TBDEConn.Open;
begin
  TDataBase(Self).LoginPrompt := false;
  TDataBase(Self).Open;
end;
function TBDEConn.CreateQuery: IQuery;
begin
  result := TBDEQuery.Create(Self);
end;
procedure TBDEConn.Commit;
begin
  if InTransaction then
    Commit;
end;
procedure TBDEConn.Close;
begin
  TDataBase(Self).Close;
end;
function TBDEConn.getComponent: TComponent;
begin
  result := self;
end;
function TBDEConn.getParams: TStrings;
begin
  result := TDataBase(Self).Params;
end;
function TBDEConn.isConnected: boolean;
begin
  result := TDataBase(Self).Connected;
end;
procedure TBDEConn.Rollback;
begin
  if InTransaction then
    Rollback;
end;
function TBDEConn.InTransaction: Boolean;
begin
  result := TDataBase(Self).InTransaction;
end;
{ TBDEQuery }
function TBDEQuery.DataSet: TDataSet;
begin
  result := self;
end;
function TBDEQuery.FieldByName(Name: String): TField;
begin
  result := TQuery(Self).FieldByName(Name);
end;
function TBDEQuery.ExecSQL: Integer;
begin
  TQuery(Self).ExecSQL;
  result := TQuery(Self).RowsAffected;
end;
function TBDEQuery.getSQL: TStrings;
begin
  result := TQuery(Self).SQL;
end;
procedure TBDEQuery.Open;
begin
  TQuery(Self).DatabaseName := (Conn.getComponent as TBDEConn).DatabaseName;
  TQuery(Self).Open;
end;
function TBDEQuery.Conn: IConnection;
begin
  result := FoConn;
end;
function TBDEQuery.isActive: boolean;
begin
  result := TQuery(Self).Active;
end;
procedure TBDEQuery.Close;
begin
  TQuery(Self).Close;
end;
function TBDEQuery.getParams: TParams;
begin
  result := TQuery(Self).Params;
end;
procedure TBDEQuery.setSQL(Value: TStrings);
begin
  TQuery(Self).SQL.Assign(Value);
end;
function TBDEQuery.getFields: TFields;
begin
  result := TQuery(Self).Fields;
end;
end.
 
No próximo artigo iremos implementar para uso com ADO.
Qualquer dúvida sabem onde me encontrar!