DATABASE ENGINE é um framework opensource que provê desacoplamento de conexão através de uma interface orientada a objeto, deixando seu sistema totalmente desacoplado de um único Engine de conexão, proporcionando de forma fácil e simples a troca para usar qualquer Engine disponível no mercado, seja ele FireDAC, DBExpress, Zeos entre outros. Fique livre de engine de conexão, sua aplicação só irá reconhecer o DBEBr.
Embarcadero Delphi XE e superior.
Instalação usando o [boss install
]
boss install "https://github.com/HashLoad/dbebr"
const
cSQLSELECT = 'SELECT CLIENT_NAME FROM CLIENT WHERE CLIENT_ID = %s';
cSQLUPDATE = 'UPDATE CLIENT SET CLIENT_NAME = %s WHERE CLIENT_ID = %s';
cSQLUPDATEPARAM = 'UPDATE CLIENT SET CLIENT_NAME = :CLIENT_NAME WHERE CLIENT_ID = :CLIENT_ID';
cDESCRIPTION = 'Description Randon=';
...
TDriverConnection = class(TObject)
strict private
FConnection: TFDConnection;
FDBConnection: IDBConnection;
FDBQuery: IDBQuery;
FDBResultSet: IDBResultSet;
...
procedure TDriverConnection.Create;
begin
FConnection := TFDConnection.Create(nil);
FConnection.Params.DriverID := 'SQLite';
FConnection.Params.Database := '.\database.db3';
FConnection.LoginPrompt := False;
FConnection.TxOptions.Isolation := xiReadCommitted;
FConnection.TxOptions.AutoCommit := False;
FDBConnection := TFactoryFireDAC.Create(FConnection, dnSQLite);
end;
procedure TDriverConnection.ExecuteDirect;
var
LValue: String;
LRandon: String;
begin
LRandon := IntToStr( Random(9999) );
FDBConnection.ExecuteDirect( Format(cSQLUPDATE, [QuotedStr(cDESCRIPTION + LRandon), '1']) );
FDBQuery := FDBConnection.CreateQuery;
FDBQuery.CommandText := Format(cSQLSELECT, ['1']);
LValue := FDBQuery.ExecuteQuery.FieldByName('CLIENT_NAME').AsString;
end;
procedure TDriverConnection.ExecuteDirectParams;
var
LParams: TParams;
LRandon: String;
LValue: String;
begin
LRandon := IntToStr( Random(9999) );
LParams := TParams.Create(nil);
try
with LParams.Add as TParam do
begin
Name := 'CLIENT_NAME';
DataType := ftString;
Value := cDESCRIPTION + LRandon;
ParamType := ptInput;
end;
with LParams.Add as TParam do
begin
Name := 'CLIENT_ID';
DataType := ftInteger;
Value := 1;
ParamType := ptInput;
end;
FDBConnection.ExecuteDirect(cSQLUPDATEPARAM, LParams);
FDBResultSet := FDBConnection.CreateResultSet(Format(cSQLSELECT, ['1']));
LValue := FDBResultSet.FieldByName('CLIENT_NAME').AsString;
finally
LParams.Free;
end;
end;
procedure TDriverConnection.Transaction;
begin
FDBConnection.Connect;
try
FDBConnection.StartTransaction;
try
// seu código aqui
FDBConnection.Commit;
except
FDBConnection.Rollback;
end;
finally
FDBConnection.Disconnect;
end;
end;
procedure TDriverConnection.CreateQuery;
var
LValue: String;
LRandon: String;
begin
LRandon := IntToStr( Random(9999) );
FDBQuery := FDBConnection.CreateQuery;
FDBQuery.CommandText := Format(cSQLUPDATE, [QuotedStr(cDESCRIPTION + LRandon), '1']);
FDBQuery.ExecuteDirect;
FDBQuery.CommandText := Format(cSQLSELECT, ['1']);
LValue := FDBQuery.ExecuteQuery.FieldByName('CLIENT_NAME').AsString;
end;
procedure TDriverConnection.CreateResultSet;
begin
FDBResultSet := FDBConnection.CreateResultSet(Format(cSQLSELECT, ['1']));
while FDBResultSet.eof do
begin
// seu código aqui
end;
end;
Nossa equipe adoraria receber contribuições para este projeto open source. Se você tiver alguma ideia ou correção de bug, sinta-se à vontade para abrir uma issue ou enviar uma pull request.
Para enviar uma pull request, siga estas etapas:
- Faça um fork do projeto
- Crie uma nova branch (
git checkout -b minha-nova-funcionalidade
) - Faça suas alterações e commit (
git commit -am 'Adicionando nova funcionalidade'
) - Faça push da branch (
git push origin minha-nova-funcionalidade
) - Abra uma pull request