1) Introdução
Embora o Elipse E3 já possua objetos que facilitam a manipulação de registros do banco de dados (como a Consulta), é possível melhorar seu desempenho criando diretamente no BD, através da linguagem T-SQL, sub-rotinas que realizam as tarefas no servidor de forma eficaz e com alto desempenho.
2) Consultas no E3
Como padrão, a Consulta do E3 é utilizada para acessar registros de uma tabela no banco de dados. Em alguns casos, são empregadas conexões ADO via script, o que não é necessário no E3 quando o banco utilizado for SQL Server, Access ou Oracle.
A Consulta trabalha apontando para uma (ou mais) tabela(s). Nesta(s) tabela(s), são selecionados alguns (ou todos os) campos, e retornados os registros encontrados. É possível utilizar comandos como DELETE, INSERT e UPDATE editando a aba SQL da Consulta, ou ainda utilizar funções SQL e aplicar filtros com a cláusula WHERE.
Quando o problema não é o tráfego na rede, a utilização das consultas é a melhor opção e a mais recomendada.
3) Utilizando stored procedures
Uma stored procedure é um conjunto de comandos ao qual atribuímos um nome. Esse conjunto fica armazenado no banco de dados (Servidor), podendo ser chamado a qualquer momento tanto pelo sistema gerenciador de banco de dados (SGBD) quanto por uma aplicação do E3.
As stored procedures podem ser utilizadas quando o tráfego de informações na rede é grande, ou quando a aplicação tem baixo desempenho e foi constatado que o consumo maior se deve à manipulação de dados entre a aplicação e o banco de dados.
Ao criar uma stored procedure, e possível passar parâmetros de entrada e de saída, os quais irão conter as informações requeridas por um SELECT, por exemplo. Esses parâmetros de entrada são passados da mesma forma como são passadas variáveis para filtros na Consulta.
Como as stored procedures são analisadas e armazenadas na memória do servidor de dados após sua primeira execução, sua execução é mais rápida do que a das instruções SQL, pois essas serão analisadas a cada chamada.
Outro benefício das stored procedures diz respeito ao volume de dados que devem ser enviados para e do SQL Server, podendo ser necessários alguns bytes para chamar um procedimento armazenado que contém vários milhares de bytes de instruções. O efeito acumulado dessa economia quando múltiplos usuários estão executando tarefas repetitivas pode ser muito significativo.
4) Aplicação (Banco de Dados)
Foi criada uma aplicação exemplo que ilustra como utilizar as stored procedures para inserir, ler e apagar registros no banco de dados.
Basicamente, a aplicação permite a manutenção dos dados da tabela Motores, onde o usuário tem permissão de inserir, apagar e verificar dados de motores em sua planta de fábrica. Serão utilizados o SQL Server 2005 Express para criar a tabela e as stored procedures.
Inicialmente, abra o SQL Server e conecte ao servidor local com a senha e o usuário criados nas instalação do SQL Server na máquina local.
Figura 1: Conexão ao SQL Server
Com o SQL Server aberto, crie um novo banco chamado Equipamentos e nele crie a tabela Motores. Esta tabela contém as colunas Fabricante, Area, Maquina, Potencia, Corrente e Tensao. Os campos serão do tipo nchar(10), nchar(10), nchar(10), float, float e float, respectivamente:
Figura 2: Criação da tabela Motores
Dentro do banco Equipamentos, acesse a pasta Programmability. Clicando com o botão direito sobre a pasta Stored Procedures, selecione a opção New Stored Procedure.
Figura 3: Criação da stored procedure
À direita, será aberta uma área de edição onde serão criadas as stored procedures e apagado todo o código que aparece como padrão.
Insira o seguinte código:
@MFabricante nchar(10),
@MPotencia float,
@MCorrente float,
@MTensao float,
@MArea nchar(10),
@MMaquina nchar(10)
as
INSERT INTO Motores
(Fabricante,Potencia,Corrente,Tensao,Area,Maquina)
VALUES
(@MFabricante,@MPotencia,@MCorrente,@MTensao,@MArea,@MMaquina)
Com esse código, está sendo criada a procedure que irá inserir os dados dos motores através do comando CREATE PROCEDURE, que tem como parâmetro o nome procInsertMotor.
Em seguida, declare as variáveis de entrada, que irão receber os valores enviados pelo aplicativo Elipse. As variáveis de entrada devem começar com o símbolo @ (arroba) seguidas do tipo (data type). Depois, defina a instrução SQL a ser executada, no caso de inserção, utilizamos o comando INSERT INTO, seguido do nome da tabela; colocamos então o nome das colunas e após o comando VALUES colocamos as variáveis, na ordem especificada. No final, clique no botão [Parse] ao lado do botão [Execute!].
Figura 4: Código da stored procedure procInsertMotor
Criamos agora uma nova procedure da mesma maneira que a anterior; esta, porém, irá selecionar os dados da tabela Motores com um filtro por fabricante, como segue:
Figura 5: Código da stored procedure procSelectMotor
Agora vamos criar uma procedure que irá apagar os dados na tabela Motores:
Figura 6: Código da stored procedure procDeleteMotor
5) Aplicação (E3)
Agora que criamos e configuramos as stored procedures no banco de dados, precisamos definir como elas serão chamadas no E3.
Crie um novo projeto (aplicação padrão) e insira um objeto Banco de Dados, configure-o de modo a acessar o banco Equipamentos, onde configuramos as stored procedures e onde existe a tabela Motores.
Figura 7: Conexão com a base de dados
Insira na aplicação três consultas e nomeie-as ConsultaInsert, ConsultaDelete e ConsultaSelect, sendo que as consultas Insert e Delete ficarão na pasta de dados (servidor) e a consulta Select ficará na tela Inicial.
Figura 8: Inclusão das consultas no projeto
Comece pela consulta Select; clique com o botão direito sobre ela e acesse a opção Configurar.
Vá até a aba SQL e habilite a edição direta do código SQL, digitando a seguinte linha:
Figura 9: Inclusão do código SQL
Este comando SQL irá executar (através da chamada Exec) uma procedure (nome da procedure) passando uma variável como parâmetro de entrada (‘<%Fab%>‘).
Repita os passos anteriores para as consultas Insert e Delete, alterando apenas o comando SQL.
Para a ConsultaInsert, utilize o comando:
Para a ConsultaDelete:
exec procDeleteMotor ‘<%Fab%>‘,’<%Area%>‘,’<%Maq%>‘
NOTA: Para consultas localizadas no servidor, deve-se alterar a propriedade CursorLocation para 1 – clClient.
Após configurar as consultas, vamos criar uma interface na tela onde o usuário possa ver os equipamentos já cadastrados, inserir novos equipamentos e apagá-los.
Figura 10: Interface da aplicação
Insira um objeto E3Browser e configure-o para utilizar a ConsultaSelect.
Figura 11: Configuração do objeto E3Browser
Insira um setpoint na tela e um botão para buscar os dados. Neste setpoint, crie um script no evento Click() e insira o seguinte script:
Figura 12: Script do botão de comando
Crie agora um botão para inserir novos dados; este botão irá abrir uma segunda tela onde o usuário irá digitar os dados do motor e confirmá-los, inserindo os dados na tabela Equipamentos.
Figura 13: Tela de inclusão de equipamentos
Feita esta tela, crie um script no botão [OK] que irá executar a ConsultaInsert:
Figura 14: Código para inclusão do Equipamento
Por fim, crie na tela inicial um botão para deletar os registros da tabela Motores; utilize o seguinte script no evento Click() do botão [Deletar]:
Figura 15: Código para exclusão do equipamento
6) Conclusão
Torna-se bastante eficaz a tarefa de manipular dados em um banco de dados, pois o código fica centralizado, semelhantemente ao que acontece com as bibliotecas, e ao ser executado é melhorado pelo próprio SQL, o que aumenta o desempenho da aplicação.