https://github.com/hashload/dbebr
DBEBr Framework for Delphi/Lazarus (Isaque Pinheiro)
https://github.com/hashload/dbebr
Last synced: 4 months ago
JSON representation
DBEBr Framework for Delphi/Lazarus (Isaque Pinheiro)
- Host: GitHub
- URL: https://github.com/hashload/dbebr
- Owner: HashLoad
- Created: 2022-06-07T16:08:39.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2024-04-03T20:39:35.000Z (over 1 year ago)
- Last Synced: 2024-04-14T00:32:23.201Z (about 1 year ago)
- Language: Pascal
- Homepage: https://www.isaquepinheiro.com.br
- Size: 5.85 MB
- Stars: 9
- Watchers: 7
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# DBEBr Framework for Delphi/Lazaruz
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.
## 🏛 Delphi Versions
Embarcadero Delphi XE e superior.## ⚙️ Instalação
Instalação usando o [`boss install`]
```sh
boss install "https://github.com/HashLoad/dbebr"
```## ⚡️ Como usar
```Delphi
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;
``````Delphi
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;
``````Delphi
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;
``````Delphi
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;
``````Delphi
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;
``````Delphi
procedure TDriverConnection.CreateResultSet;
begin
FDBResultSet := FDBConnection.CreateResultSet(Format(cSQLSELECT, ['1']));
while FDBResultSet.eof do
begin
// seu código aqui
end;
end;
```## ✍️ License
[](https://opensource.org/licenses/LGPL-3.0)## ⛏️ Contribuição
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.
[](https://github.com/HashLoad/ormbr/issues)
Para enviar uma pull request, siga estas etapas:
1. Faça um fork do projeto
2. Crie uma nova branch (`git checkout -b minha-nova-funcionalidade`)
3. Faça suas alterações e commit (`git commit -am 'Adicionando nova funcionalidade'`)
4. Faça push da branch (`git push origin minha-nova-funcionalidade`)
5. Abra uma pull request## 📬 Contato
[](https://t.me/hashload)## 💲 Doação
[](https://pag.ae/bglQrWD)