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.
/// /// '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 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 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 FROM CLIENTES WHERE ID_CLIENTE = 1'; /// TCQL.New(dbnFirebird) .Delete .From('CLIENTES') .Where('ID_CLIENTE = 1') .AsString);