• Nenhum resultado encontrado

Exemplo de Exclusão

No documento Java Interfaces Gráficas e Banco de Dados (páginas 80-90)

7.7 Exemplo de Inclusão

7.8 Exemplo de Alteração

7.9 Exemplo de Consulta

Exercício de Fixação 7 – Manipulando Resultados de Consultas

Liste as principais classes que o Java disponibiliza no pacote java.sql necessários para o desenvolvimento de aplicações Java que possibilitem acesso a banco de dados?

Atividade 1 – Manipulando Resultados de Consultas

Desenvolva a aplicação em camadas (padrão MVC).

1. Uma indústria deseja manter um banco de dados sobre a folha de pagamento mensal de seus funcionários. Para isso, é lido de cada funcionário: o nome, o salário-base e uma categoria funcional (numérica: 1-operário, 2-administrativo ou 3-gerência). Os dados devem ficar armazenados em uma tabela no PostgreSQL e a cada vez que for solicitado, o contracheque de um funcionário deve ser exibido, com as seguintes informações: nome do funcionário, salário bruto (se da categoria 1, o próprio salário- base; se da categoria 2, o salário-base + 5%; se da categoria 3, o salário-base + 15%),

descontos (se salário bruto maior ou igual a 1000, 3% sobre o salário bruto; caso

contrário, 1% sobre o salário bruto) e salário líquido (salário bruto – descontos). Desenvolva uma aplicação GUI em Java que apresente as seguintes opções:

c) Incluir (solicitação dos dados de um funcionário e gravação de um registro com os dados da folha de pagamento no arquivo).

d) Listar (leitura dos dados da folha de pagamento de um funcionário do arquivo, mostrando as informações do contra-cheque).

Atividade 2 – Manipulando Resultados de Consultas

1. Defina um novo banco de dados no PostgreSQL que deverá possuir três tabelas. A primeira, denominada DEPARTAMENTO, deverá conter o código (valor inteiro) e seu nome (literal). A segunda, denominada OCUPAÇÃO, deverá conter o código (valor inteiro) e sua descrição (literal). A terceira, denominada FUNCIONÁRIO, deverá conter o número de registro do funcionário (valor inteiro), o nome (literal), o código de ocupação, o código do departamento em que está lotado.

2. Desenvolva um aplicação GUI em Java que apresente as seguintes opções para manipulação do banco de dados implementado no enunciado 1 da atividade 2 – Java JDBC:

a) Uma tela (JFrame) que possibilite a manutenção de registros na tabela DEPARTAMENTO (inclusão, exclusão, consulta, alteração);

b) Uma tela (JFrame) que possibilite a manutenção de registros na tabela OCUPAÇÃO (inclusão, exclusão, consulta, alteração);

c) Uma tela (JFrame) que possibilite a manutenção de registros na tabela FUNCIONÁRIO (inclusão, exclusão, consulta, alteração). Os dados das tabelas relacionadas deverão estar acessíveis em objetos JComboBox;

d) Implementar uma classe executável que disponibilize um Menu com opções de acesso para as telas implementadas nos itens a, b e c.

Exercício de Fixação 7 – Manipulando Resultados de Consultas

Liste as principais classes que o Java disponibiliza no pacote java.sql necessários para o desenvolvimento de aplicações Java que possibilitem acesso a banco de dados?

Atividade 1 – Manipulando Resultados de Consultas

Desenvolva a aplicação em camadas (padrão MVC).

1. Uma indústria deseja manter um banco de dados sobre a folha de pagamento mensal de seus funcionários. Para isso, é lido de cada funcionário: o nome, o salário-base e uma categoria funcional (numérica: 1-operário, 2-administrativo ou 3-gerência). Os dados devem ficar armazenados em uma tabela no PostgreSQL e a cada vez que for solicitado, o contracheque de um funcionário deve ser exibido, com as seguintes informações: nome do funcionário, salário bruto (se da categoria 1, o próprio salário- base; se da categoria 2, o salário-base + 5%; se da categoria 3, o salário-base + 15%),

descontos (se salário bruto maior ou igual a 1000, 3% sobre o salário bruto; caso

contrário, 1% sobre o salário bruto) e salário líquido (salário bruto – descontos). Desenvolva uma aplicação GUI em Java que apresente as seguintes opções:

c) Incluir (solicitação dos dados de um funcionário e gravação de um registro com os dados da folha de pagamento no arquivo).

d) Listar (leitura dos dados da folha de pagamento de um funcionário do arquivo, mostrando as informações do contra-cheque).

Atividade 2 – Manipulando Resultados de Consultas

1. Defina um novo banco de dados no PostgreSQL que deverá possuir três tabelas. A primeira, denominada DEPARTAMENTO, deverá conter o código (valor inteiro) e seu nome (literal). A segunda, denominada OCUPAÇÃO, deverá conter o código (valor inteiro) e sua descrição (literal). A terceira, denominada FUNCIONÁRIO, deverá conter o número de registro do funcionário (valor inteiro), o nome (literal), o código de ocupação, o código do departamento em que está lotado.

2. Desenvolva um aplicação GUI em Java que apresente as seguintes opções para manipulação do banco de dados implementado no enunciado 1 da atividade 2 – Java JDBC:

a) Uma tela (JFrame) que possibilite a manutenção de registros na tabela DEPARTAMENTO (inclusão, exclusão, consulta, alteração);

b) Uma tela (JFrame) que possibilite a manutenção de registros na tabela OCUPAÇÃO (inclusão, exclusão, consulta, alteração);

c) Uma tela (JFrame) que possibilite a manutenção de registros na tabela FUNCIONÁRIO (inclusão, exclusão, consulta, alteração). Os dados das tabelas relacionadas deverão estar acessíveis em objetos JComboBox;

d) Implementar uma classe executável que disponibilize um Menu com opções de acesso para as telas implementadas nos itens a, b e c.

8. Gerenciamento de Transações

8.1 Stored Procedures

São procedimentos armazenados no banco de dados, prontas para execução, que podem ou não ter parâmetros, e também podem ou não ter algum resultado.

Suponha que exista uma stored procedure no nosso banco, chamada:

consultaempregado, que recebe um parâmetro, o código de um funcionário e retorna o

seu nome caso o encontre. A ilustração abaixo apresenta o código da stored procedure implementada dentro de uma SGBD:

Para executar a stored procedure consultaempregado, a aplicação deve instanciar um objeto da classe CallabeStatement, confirme ilustração a seguir.

Quando se quer que a Stored Procedure retorne um valor, sem ser um parâmetro de retorno, a sintaxe da string dentro do prepareCall é:

{?= call [,, ...]}

Nesse caso, a primeira interrogação ({ ?= ...) terá o índice 1 para o registerOutParameter.

Todos os parâmetros de saída (OUT) devem ser registrados com registerOutParameter, antes de chamar o procedimento.

A ilustração a seguir lista a sintaxe de chamada de stored procedures disponíveis no Java.

8. Gerenciamento de Transações

8.1 Stored Procedures

São procedimentos armazenados no banco de dados, prontas para execução, que podem ou não ter parâmetros, e também podem ou não ter algum resultado.

Suponha que exista uma stored procedure no nosso banco, chamada:

consultaempregado, que recebe um parâmetro, o código de um funcionário e retorna o

seu nome caso o encontre. A ilustração abaixo apresenta o código da stored procedure implementada dentro de uma SGBD:

Para executar a stored procedure consultaempregado, a aplicação deve instanciar um objeto da classe CallabeStatement, confirme ilustração a seguir.

Quando se quer que a Stored Procedure retorne um valor, sem ser um parâmetro de retorno, a sintaxe da string dentro do prepareCall é:

{?= call [,, ...]}

Nesse caso, a primeira interrogação ({ ?= ...) terá o índice 1 para o registerOutParameter.

Todos os parâmetros de saída (OUT) devem ser registrados com registerOutParameter, antes de chamar o procedimento.

A ilustração a seguir lista a sintaxe de chamada de stored procedures disponíveis no Java.

8.2 Transações

Uma transação é um conjunto de um ou mais comandos que são executados, completados e então validados (commit) ou cancelados (rollback). Quando uma transação é validada ou cancelada, outra transação se inicia.

A conexão em java é, por default, auto-commit. Isso significa que sempre que um comando é executado, um commit é executado no banco de dados. Se o comando auto-

commit for desabilitado, então deve-se fazer explicitamente o commit ou rollback das

transações. A maioria dos drivers JDBC suportam transações. Um exemplo de código: con.setAutoCommit(false); Statement st = con.createStatement(); .... con.commit(); con.setAutoCommit(true);

O comando setAutoCommit é aplicado à conexão, e define se os commits e rollbacks serão ou não efetuados automaticamente. Caso não sejam, a conexão disponibiliza os comandos commit() e rollback().

O código da ilustração a seguir demonstra o uso de controle de transações dentro de uma aplicação Java.

8.3 Execução em Batch

É usado quando se tem muitas atualizações para serem feitas no banco de dados. Muitas vezes, atualizações em batch são mais rápidas do que atualizações feitas uma a uma. Exemplo:

con.setAutoCommit(false);

Statement stmt = con.createStatement(); stmt.addBatch("INSERT INTO COFFEES " +

"VALUES('Amaretto', 49, 9.99, 0, 0)"); stmt.addBatch("INSERT INTO COFFEES " +

"VALUES('Hazelnut', 49, 9.99, 0, 0)"); stmt.addBatch("INSERT INTO COFFEES " +

"VALUES('Amaretto_decaf', 49, 10.99, 0, 0)");

stmt.addBatch("INSERT INTO COFFEES " + "VALUES('Hazelnut_decaf', 49, 10.99, 0, 0)");

int [] updateCounts = stmt.executeBatch(); con.commit();

con.setAutoCommit(true);

A linha:

con.setAutoCommit(false);

é usada para desabilitar o auto-commit da conexão. Isso é usado para que não aconteçam erros imprevistos na execução do batch.

A linha de código int [] updateCounts = stmt.executeBatch(); executa todos os comandos que foram inseridos com addBatch, na ordem em que foram inseridos. Quando terminados, esse método retorna, para cada um dos comandos, a quantidade de linhas

8.2 Transações

Uma transação é um conjunto de um ou mais comandos que são executados, completados e então validados (commit) ou cancelados (rollback). Quando uma transação é validada ou cancelada, outra transação se inicia.

A conexão em java é, por default, auto-commit. Isso significa que sempre que um comando é executado, um commit é executado no banco de dados. Se o comando auto-

commit for desabilitado, então deve-se fazer explicitamente o commit ou rollback das

transações. A maioria dos drivers JDBC suportam transações. Um exemplo de código: con.setAutoCommit(false); Statement st = con.createStatement(); .... con.commit(); con.setAutoCommit(true);

O comando setAutoCommit é aplicado à conexão, e define se os commits e rollbacks serão ou não efetuados automaticamente. Caso não sejam, a conexão disponibiliza os comandos commit() e rollback().

O código da ilustração a seguir demonstra o uso de controle de transações dentro de uma aplicação Java.

8.3 Execução em Batch

É usado quando se tem muitas atualizações para serem feitas no banco de dados. Muitas vezes, atualizações em batch são mais rápidas do que atualizações feitas uma a uma. Exemplo:

con.setAutoCommit(false);

Statement stmt = con.createStatement(); stmt.addBatch("INSERT INTO COFFEES " +

"VALUES('Amaretto', 49, 9.99, 0, 0)"); stmt.addBatch("INSERT INTO COFFEES " +

"VALUES('Hazelnut', 49, 9.99, 0, 0)"); stmt.addBatch("INSERT INTO COFFEES " +

"VALUES('Amaretto_decaf', 49, 10.99, 0, 0)");

stmt.addBatch("INSERT INTO COFFEES " + "VALUES('Hazelnut_decaf', 49, 10.99, 0, 0)");

int [] updateCounts = stmt.executeBatch(); con.commit();

con.setAutoCommit(true);

A linha:

con.setAutoCommit(false);

é usada para desabilitar o auto-commit da conexão. Isso é usado para que não aconteçam erros imprevistos na execução do batch.

A linha de código int [] updateCounts = stmt.executeBatch(); executa todos os comandos que foram inseridos com addBatch, na ordem em que foram inseridos. Quando terminados, esse método retorna, para cada um dos comandos, a quantidade de linhas

afetas por eles (por isso que retorna um array de inteiros). Como o auto-commit foi desligado, deve-se explicitamente efetuar o commit.

O código da ilustração a seguir demonstra o uso de controle de transações dentro de uma aplicação Java.

Exercícios de Fixação 8 – Gerenciamento de Transações

Liste os principais recursos que você consegue identificar que sejam necessários para o desenvolvimento de aplicações Java que possibilitem acesso a banco de dados?

Atividade 1 – Gerenciamento de Transações

1. Uma loja decidiu fazer o levantamento de informações em relação aos produtos que disponibiliza para venda, juntamente com informações de seus fornecedores. Durante a fase de especificação de requisitos e entrevistas com o usuário os analistas conseguiram identificar a necessidade da criação da entidade Produto (nome, preço de compra, preço de venda, estoque e estoque mínimo) e também a entidade Fornecedor (nome, endereço, telefone, contato). Verificou-se também que a relação entre estas entidades é de (1:N), sendo necessária a criação de um relacionamento entre Produto e Fornecedor, visto que um produto pode ser fornecido por apenas um fornecedor e um fornecedor pode fornecer mais de um produto para esta empresa.

Desenvolva os problemas descritos abaixo:

2.1. Crie um banco de dados no PostgreSQL com o nome de estoque.

2.1.1. Crie as tabelas, com base nas estruturas de dados descritas anteriormente, que irão compor o banco de dados no SGBD PostgreSQL.

2.2. Desenvolva uma aplicação GUI Java que disponibilize as seguintes funcionalidades:

2.2.1. Classes modelos para cada uma das tabelas implementadas no banco de dados da aplicação;

2.2.2. Classes DAO que irão possibilitar o acesso ao banco de dados para manutenção de registros das tabelas implementadas no banco de dados da aplicação;

2.2.3. Menu principal que possibilite acesso as telas para manutenção de registros da tabela produto, fornecedor e também para relação entre produto- fornecedor;

2.2.4. Tela que possibilite a manutenção de dados de produtos (inclusão, alteração, consulta, exclusão).

2.2.5. Tela que possibilite a manutenção de dados de fornecedores (inclusão, alteração, consulta, exclusão).

2.2.6. Tela que possibilite, através de cliques em botões, a visualização dos resultados das seguintes consultas SQL:

2.2.6.1. A média geral da quantidade em estoque dos produtos da empresa; 2.2.6.2. O nome e o contato do fornecedor do produto que tem o menor preço

de venda;

2.2.6.3. O nome do produto que tem o maior preço de compra, juntamente com seu fornecedor e contato;

2.2.6.4. Para cada fornecedor, o total de produto que ele fornece; 2.2.6.5. A média dos preços de compra de cada um dos fornecedores

2.2.6.6. O total em R$ dos produtos armazenados na empresa, tendo como base o preço de compra.

afetas por eles (por isso que retorna um array de inteiros). Como o auto-commit foi desligado, deve-se explicitamente efetuar o commit.

O código da ilustração a seguir demonstra o uso de controle de transações dentro de uma aplicação Java.

Exercícios de Fixação 8 – Gerenciamento de Transações

Liste os principais recursos que você consegue identificar que sejam necessários para o desenvolvimento de aplicações Java que possibilitem acesso a banco de dados?

Atividade 1 – Gerenciamento de Transações

1. Uma loja decidiu fazer o levantamento de informações em relação aos produtos que disponibiliza para venda, juntamente com informações de seus fornecedores. Durante a fase de especificação de requisitos e entrevistas com o usuário os analistas conseguiram identificar a necessidade da criação da entidade Produto (nome, preço de compra, preço de venda, estoque e estoque mínimo) e também a entidade Fornecedor (nome, endereço, telefone, contato). Verificou-se também que a relação entre estas entidades é de (1:N), sendo necessária a criação de um relacionamento entre Produto e Fornecedor, visto que um produto pode ser fornecido por apenas um fornecedor e um fornecedor pode fornecer mais de um produto para esta empresa.

Desenvolva os problemas descritos abaixo:

2.1. Crie um banco de dados no PostgreSQL com o nome de estoque.

2.1.1. Crie as tabelas, com base nas estruturas de dados descritas anteriormente, que irão compor o banco de dados no SGBD PostgreSQL.

2.2. Desenvolva uma aplicação GUI Java que disponibilize as seguintes funcionalidades:

2.2.1. Classes modelos para cada uma das tabelas implementadas no banco de dados da aplicação;

2.2.2. Classes DAO que irão possibilitar o acesso ao banco de dados para manutenção de registros das tabelas implementadas no banco de dados da aplicação;

2.2.3. Menu principal que possibilite acesso as telas para manutenção de registros da tabela produto, fornecedor e também para relação entre produto- fornecedor;

2.2.4. Tela que possibilite a manutenção de dados de produtos (inclusão, alteração, consulta, exclusão).

2.2.5. Tela que possibilite a manutenção de dados de fornecedores (inclusão, alteração, consulta, exclusão).

2.2.6. Tela que possibilite, através de cliques em botões, a visualização dos resultados das seguintes consultas SQL:

2.2.6.1. A média geral da quantidade em estoque dos produtos da empresa; 2.2.6.2. O nome e o contato do fornecedor do produto que tem o menor preço

de venda;

2.2.6.3. O nome do produto que tem o maior preço de compra, juntamente com seu fornecedor e contato;

2.2.6.4. Para cada fornecedor, o total de produto que ele fornece; 2.2.6.5. A média dos preços de compra de cada um dos fornecedores

2.2.6.6. O total em R$ dos produtos armazenados na empresa, tendo como base o preço de compra.

3. Atividade 2 – Gerenciamento de Transações

1. Uma indústria deseja manter um banco de dados sobre a folha de pagamento mensal de seus funcionários. Para isso, é lido de cada funcionário: o nome, o salário-base e uma categoria funcional (numérica: 1-operário, 2-administrativo ou 3-gerência). Os dados devem ficar armazenados em uma tabela no PostgreSQL e a cada vez que for solicitado, o contracheque de um funcionário deve ser exibido, com as seguintes informações: nome do funcionário, salário bruto (se da categoria 1, o próprio salário- base; se da categoria 2, o salário-base + 5%; se da categoria 3, o salário-base + 15%), descontos (se salário bruto maior ou igual a 1000, 3% sobre o salário bruto; caso contrário, 1% sobre o salário bruto) e salário líquido (salário bruto – descontos). Desenvolva uma aplicação GUI em Java que apresente as seguintes opções:

a) Incluir (solicitação dos dados de um funcionário e gravação de um registro com os dados da folha de pagamento no arquivo).

b) Listar (leitura dos dados da folha de pagamento de um funcionário do arquivo, mostrando as informações do contracheque).

2. A comissão organizadora de um campeonato de atletismo decidiu apurar os resultados da competição através de um processamento eletrônico. De cada atleta são lidos: código de identificação, nome e o tempo gasto em cada uma das 5 provas que formam a competição. Esses dados são armazenados em um arquivo. Ao final de cada prova, a pontuação é atribuída de acordo com o tempo realizado em cada prova (quem gastou menos tempo está em 1º lugar) e é feita da seguinte maneira: 1º colocado: 5 pontos, 2º colocado: 3 pontos e 3º colocado: 1 ponto. Essa pontuação é atualizada na pontuação geral do campeonato. Desenvolva uma aplicação GUI em Java que apresente as seguintes opções:

a) Inclusão dos dados (solicitação dos dados de um atleta e gravação de um registro no arquivo).

b) Classificação (leitura dos dados dos atletas e processamento dos tempos e pontos).

9. Biblioteca Jasper – Relatórios

No documento Java Interfaces Gráficas e Banco de Dados (páginas 80-90)

Documentos relacionados