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
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;
Classes, DB, DBTables;
type
// camada para controle da conexão
TBDEConn = class(TDatabase, IConnection)
public
function getComponent: TComponent;
// 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;
procedure Open;
procedure Close;
function isConnected: boolean;
// controle de transação
procedure StarTransaction;
procedure Commit;
procedure Rollback;
function InTransaction: Boolean;
procedure StarTransaction;
procedure Commit;
procedure Rollback;
function InTransaction: Boolean;
// criador de queries
function CreateQuery: IQuery;
function CreateQuery: IQuery;
// parâmetros de conexão
function getParams: TStrings;
function getFramework: TFramework;
function getParams: TStrings;
function getFramework: TFramework;
property Params: TStrings read getParams;
end;
end;
// camada para execução de consultas
TBDEQuery = class(TQuery, IQuery)
private
FoConn: IConnection;
public
function Conn: IConnection;
TBDEQuery = class(TQuery, IQuery)
private
FoConn: IConnection;
public
function Conn: IConnection;
// controle de conexão
procedure Open;
procedure Close;
function isActive: boolean;
procedure Open;
procedure Close;
function isActive: boolean;
// execução de comandos
function ExecSQL: Integer;
function DataSet: TDataSet;
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;
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;
property Fields: TFields read getFields;
end;
implementation
{ TBDEConn }
procedure TBDEConn.StarTransaction;
begin
if not InTransaction then
StarTransaction;
end;
begin
if not InTransaction then
StarTransaction;
end;
function TBDEConn.getFramework: TFramework;
begin
result := fwBDE;
end;
begin
result := fwBDE;
end;
procedure TBDEConn.Open;
begin
TDataBase(Self).LoginPrompt := false;
TDataBase(Self).Open;
end;
begin
TDataBase(Self).LoginPrompt := false;
TDataBase(Self).Open;
end;
function TBDEConn.CreateQuery: IQuery;
begin
result := TBDEQuery.Create(Self);
end;
begin
result := TBDEQuery.Create(Self);
end;
procedure TBDEConn.Commit;
begin
if InTransaction then
Commit;
end;
begin
if InTransaction then
Commit;
end;
procedure TBDEConn.Close;
begin
TDataBase(Self).Close;
end;
begin
TDataBase(Self).Close;
end;
function TBDEConn.getComponent: TComponent;
begin
result := self;
end;
begin
result := self;
end;
function TBDEConn.getParams: TStrings;
begin
result := TDataBase(Self).Params;
end;
begin
result := TDataBase(Self).Params;
end;
function TBDEConn.isConnected: boolean;
begin
result := TDataBase(Self).Connected;
end;
begin
result := TDataBase(Self).Connected;
end;
procedure TBDEConn.Rollback;
begin
if InTransaction then
Rollback;
end;
begin
if InTransaction then
Rollback;
end;
function TBDEConn.InTransaction: Boolean;
begin
result := TDataBase(Self).InTransaction;
end;
begin
result := TDataBase(Self).InTransaction;
end;
{ TBDEQuery }
function TBDEQuery.DataSet: TDataSet;
begin
result := self;
end;
begin
result := self;
end;
function TBDEQuery.FieldByName(Name: String): TField;
begin
result := TQuery(Self).FieldByName(Name);
end;
begin
result := TQuery(Self).FieldByName(Name);
end;
function TBDEQuery.ExecSQL: Integer;
begin
TQuery(Self).ExecSQL;
result := TQuery(Self).RowsAffected;
end;
begin
TQuery(Self).ExecSQL;
result := TQuery(Self).RowsAffected;
end;
function TBDEQuery.getSQL: TStrings;
begin
result := TQuery(Self).SQL;
end;
begin
result := TQuery(Self).SQL;
end;
procedure TBDEQuery.Open;
begin
TQuery(Self).DatabaseName := (Conn.getComponent as TBDEConn).DatabaseName;
TQuery(Self).Open;
end;
begin
TQuery(Self).DatabaseName := (Conn.getComponent as TBDEConn).DatabaseName;
TQuery(Self).Open;
end;
function TBDEQuery.Conn: IConnection;
begin
result := FoConn;
end;
begin
result := FoConn;
end;
function TBDEQuery.isActive: boolean;
begin
result := TQuery(Self).Active;
end;
begin
result := TQuery(Self).Active;
end;
procedure TBDEQuery.Close;
begin
TQuery(Self).Close;
end;
begin
TQuery(Self).Close;
end;
function TBDEQuery.getParams: TParams;
begin
result := TQuery(Self).Params;
end;
begin
result := TQuery(Self).Params;
end;
procedure TBDEQuery.setSQL(Value: TStrings);
begin
TQuery(Self).SQL.Assign(Value);
end;
begin
TQuery(Self).SQL.Assign(Value);
end;
function TBDEQuery.getFields: TFields;
begin
result := TQuery(Self).Fields;
end;
begin
result := TQuery(Self).Fields;
end;
end.
No próximo artigo iremos implementar para uso com ADO.
Qualquer dúvida sabem onde me encontrar!