CQLBr Framework - Criteria Query Language for Delphi/Lazarus

CQLBr Framework

Criteria Query Language for Delphi/Lazarus

Compartilhe: CQLBr Framework - Isaque Pinheiro CQLBr Framework - Isaque Pinheiro CQLBr Framework - Isaque Pinheiro CQLBr Framework - Isaque Pinheiro CQLBr Framework - Isaque Pinheiro Faça Doação

Criteria Query Language é um framework opensource que provê escritas gerando o script SQL, através de uma interface, permitindo mapear de forma orientada a objeto, toda sintaxe de comandos SQL (SELECT, INSERT, UPDATE e DELETE), para banco de dados relacional.

Durante o desenvolvimento de software, é evidente a preocupação em que se tem em aumentar a produtividade e manter a compatibilidade entre os possíveis bancos que um sistema pode usar. No que se refere a sintaxe de banco de dados, temos em alguns casos, incompatibilidades entre comandos SQL, exigindo assim, a necessidade de um maior controle na escrita de cada banco, e foi para ajudar nesse ponto crítico que CQLBr nasceu, ele foi projetado para que a escrita de querys seja única, de forma funcional e orientada a objeto, possibilitando assim a mesma escrita feita pelo framework, gerar querys diferentes conforme o banco selecionado, o qual pode ser mudado de forma muito simples, bastando selecionar um dos modelos implementados no CQLBr Framework, sem ter que re-faturar diversas querys espalhadas pelas milhares de linhas de código.

Download Fontes

 

SELECT

  /// 
  ///   'SELECT * FROM CLIENTES WHERE (ID_CLIENTE = 1) AND (ID >= 10) AND (ID <= 20)'
  /// 
  TCQL.New(dbnFirebird)
      .Select
      .All
      .From('CLIENTES')
      .Where('ID_CLIENTE = 1')
      .&And('ID').GreaterEqThan(10)
      .&And('ID').LessEqThan(20)
    .AsString;


  /// 
  ///  'SELECT ID_CLIENTE, NOME_CLIENTE, 
                    (CASE TIPO_CLIENTE 
                     WHEN 0 THEN ''FISICA'' 
                     WHEN 1 THEN ''JURIDICA'' 
                     ELSE ''PRODUTOR'' 
                     END) AS TIPO_PESSOA FROM CLIENTES;'
  ///
  TCQL.New(dbnFirebird)
      .Select
      .Column('ID_CLIENTE')
      .Column('NOME_CLIENTE')
      .Column('TIPO_CLIENTE')
        .&Case
          .When('0').&Then(CQL.Q('FISICA'))
          .When('1').&Then(CQL.Q('JURIDICA'))
                    .&Else('PRODUTOR')
        .&End
        .&As('TIPO_PESSOA')
        .From('CLIENTES')
    .AsString);

  /// 
  ///   'SELECT * FROM CLIENTES WHERE (NOME LIKE ''%VALUE%'');'
  /// 
  TCQL.New(dbnFirebird)
      .Select
      .All
      .From('CLIENTES')
      .Where('NOME').LikeFull('VALUE')
    .AsString);

  /// 
  ///   'SELECT * FROM CLIENTES WHERE (VALOR IN (1, 2, 3));'
  /// 
  TCQL.New(dbnFirebird)
      .Select
      .All
      .From('CLIENTES')
      .Where('VALOR').&In([1, 2, 3])
    .AsString);

  /// 
  ///   'SELECT * FROM CLIENTES 
         WHERE (NOT EXISTS (SELECT IDCLIENTE FROM PEDIDOS 
                                 WHERE (PEDIDOS.IDCLIENTE = CLIENTES.IDCLIENTE)));'
  ///
  TCQL.New(dbnFirebird)
      .Select
      .All
      .From('CLIENTES')
      .Where.NotExists( TCQL.New(dbnFirebird)
                            .Select
                            .Column('IDCLIENTE')
                            .From('PEDIDOS')
                            .Where('PEDIDOS.IDCLIENTE').Equal('CLIENTES.IDCLIENTE')
                        .AsString)
    .AsString);
 

INSERT

  /// 
  ///   'INSERT INTO CLIENTES (ID_CLIENTE, NOME_CLIENTE) VALUES (''1'', ''MyName'')';
  /// 
  TCQL.New(dbnFirebird)
      .Insert
      .Into('CLIENTES')
      .&Set('ID_CLIENTE', '1')
      .&Set('NOME_CLIENTE', 'MyName')
    .AsString);
 

UPDATE

  /// 
  ///   'UPDATE CLIENTES SET ID_CLIENTE = ''1'', NOME_CLIENTE = ''MyName'' WHERE ID_CLIENTE = 1';
  ///   
  TCQL.New(dbnFirebird)
      .Update('CLIENTES')
      .&Set('ID_CLIENTE', '1')
      .&Set('NOME_CLIENTE', 'MyName')
      .Where('ID_CLIENTE = 1')
    .AsString);
 

DELETE

  /// 
  ///   'DELETE FROM CLIENTES WHERE ID_CLIENTE = 1';
  ///   
  TCQL.New(dbnFirebird)
      .Delete
      .From('CLIENTES')
      .Where('ID_CLIENTE = 1')
    .AsString);