sistemassistemasde de bancobancode dados · xml banco de dados mysql postgresql oracle rui rossi...
TRANSCRIPT
![Page 1: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/1.jpg)
CapítuloCapítulo 3434
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
SistemasSistemas de de BancoBanco de de DadosDados
![Page 2: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/2.jpg)
Objetivos do Capítulo
� Instalar e configurar um sistema gerenciador de banco de dados relacional.
� Apresentar a API do Java que permite aos aplicativos acessarem bancos de dados de diferentes fornecedores: a JDBC.
� Indicar como realizar operações fundamentais de
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� Indicar como realizar operações fundamentais de manipulação de registros: inclusão, consulta, exclusão e alteração.
� Analisar os recursos que permitem extrair dados relativos à estrutura de um banco de dados ou de um resultado produzido por uma consulta.
![Page 3: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/3.jpg)
Introdução
� Persistência: gravação em mecanismo não volátil� Arquivos
� TXT
� XML
� Banco de dados�MySQL
� PostgreSQL
�Oracle
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 4: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/4.jpg)
Introdução
� SGBD� Relacional (SGBDR)
� Tabelas (Entidades)
o Colunas (Campos ou Atributos)
o Linhas (Registros ou Tuplas)
� Relacionamentos (Chaves Estrangeiras)
� Orientado a Objetos (SGBDOO)�Objetos
� Ex.: DB4O
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� Ex.: DB4O
![Page 5: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/5.jpg)
Introdução
� SQL (Structured Query Language)� DDL (Data Definition Language)
� CREATE DATABASE
� DROP TABLE
� CREATE TABLE
� ALTER TABLE
� DML (Data Manipulation Language)� INSERT
UPDATE
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
�UPDATE
� DELETE
� SELECT
![Page 6: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/6.jpg)
Introdução
� API: JDBC� Pacote: java.sql
� Classes:� Date
� DriverManager
� Time
� Interfaces� Connection
DataBaseMetaData
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� DataBaseMetaData
� PreparedStatement
� ResultSet
� ResultSetMetaData
� Statement
� Exceções� SQLException
![Page 7: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/7.jpg)
Servidor de Banco de Dados
� MySQL Server� Web site: http://www.mysql.com
� Uso livre: MySQL Community Server
� Instalação� Pular criação de conta (Skip Sign-Up)
� Configurar a instância do servidor� Assistente: MySQL Server Instance Configuration Wizard
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� Assistente: MySQL Server Instance Configuration Wizard
� Tipo de configuração: Standard Configuration
� Install As Windows Service
� Include Bin Directory in Windows PATH
� Senha do root
![Page 8: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/8.jpg)
Servidor de Banco de Dados
� Comando: testando a conectividade
mysqladmin –u root –p ping
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
Opções:� -u: especifica o login do usuário
� -p: especifica que a senha do usuário deverá ser solicitada.
![Page 9: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/9.jpg)
Servidor de Banco de Dados
� Comando: iniciar manualmente o servidor
mysqld --standalone
� Comando: encerrar manualmente o servidor
mysqladmin -u root -p shutdown
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
mysqladmin -u root -p shutdown
![Page 10: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/10.jpg)
Driver JDBC
� Intermediário: aplicativo Java e banco de dados
� Tipos:� Tipo 1: emprega a API ODBC (Open DataBase Connectivity) para realizar toda a comunicação com o banco de dados e mapeia a chamada a cada método da JDBC para uma função ODBC.
� Tipo 2: utiliza bibliotecas escritas em código nativo da máquina cliente e converte cada chamada de método JDBC para uma chamada a esta biblioteca nativa.
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
chamada a esta biblioteca nativa.
� Tipo 3: converte cada chamada de método JDBC para uma chamada de rede enviada a um servidor que utiliza um protocolo independente de banco de dados. Este servidor exerce a função de middleware, ou seja, ele funciona como um componente intermediário entre a máquina cliente e o banco de dados.
� Tipo 4: é um driver completamente escrito em Java e converte todas as chamadas a métodos JDBC diretamente para o protocolo específico do banco de dados.
![Page 11: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/11.jpg)
Driver JDBC
� Comparativo:� Tipo 1: perde em eficiência por ter de converter cada chamada para o padrão ODBC e requer que cada máquina cliente tenha o driver ODBC instalado.
� Tipo 2: tem melhor performance que o anterior, mas requer que as bibliotecas do banco de dados estejam instaladas em cada máquina cliente e a disponibilidade delas depende do sistema operacional utilizado.
� Tipo 3: requer a construção de um servidor intermediário e a
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� Tipo 3: requer a construção de um servidor intermediário e a escrita de código específico do banco de dados utilizado.
� Tipo 4: tem uma performance consideravelmente melhor que as opções anteriores por estabelecer uma comunicação direta com o banco de dados. Para que ele funcione, basta incluí-lo junto à aplicação que será utilizada para o acesso ao banco de dados.
![Page 12: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/12.jpg)
Driver JDBC
� MySQL Connector: Driver JDBC Tipo 4� Arquivo: mysql-connector-java-5.1.12-bin.jar (716KB)
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 13: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/13.jpg)
Criação de um Banco de Dados
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 14: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/14.jpg)
Criação de um Banco de Dados
� Procedimento via linha de comando:� No Windows:
mysql -u root –p
source C:\PCJ\Cap35\comercio.sql
� No Linux:mysql -u root –p
source /home/rui/PCJ/Cap35/comercio.sql
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� Conferência:show databases;
show tables from comercio;
![Page 15: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/15.jpg)
Criação de um Banco de Dados
� Procedimento com ferramentas visuais:� MySQL Administrator:
�Open Backup File (Comercio 20100413 0013.sql)
� Start Restore
� MySQL Query Browser:�Menu: Arquivo -> Open Script (Comercio 20100413 0013.sql)
�Menu: Script -> Execute
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 16: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/16.jpg)
Conexão com o Banco de Dados
� Registrar o driver JDBC
Class.forName("com.mysql.jdbc.Driver");
� Abrir uma conexão com o banco de dados
Connection conexao = DriverManager.getConnection(
"jdbc:mysql://localhost/comercio","root","root");
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
"jdbc:mysql://localhost/comercio","root","root");
� Configurar a conexão
conexao.setAutoCommit(false);
conexao.setTransactionIsolation(
Connection.TRANSACTION_READ_COMMITTED);
![Page 17: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/17.jpg)
Conexão com o Banco de Dados
� Fechar a conexão
conexao.close();
� Confirmar transação
conexao.commit();
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� Cancelar transação
conexao.rollback();
![Page 18: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/18.jpg)
Conexão com o Banco de Dados
� Interface java.sql.Connection� Métodos:
� void close( ) throws SQLException
� boolean isClosed( ) throws SQLException
� void setAutoCommit(boolean autoCommit) throws SQLException
� boolean getAutoCommit( ) throws SQLException
� void commit( ) throws SQLException
� void rollback( ) throws SQLException
void setTransactionIsolation(int level) throws SQLException
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� void setTransactionIsolation(int level) throws SQLException
� int getTransactionIsolation( ) throws SQLException
� Statement createStatement( ) throws SQLException
� PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) throws SQLException
� CallableStatement prepareCall(String sql) throws SQLException
� DataBaseMetaData getMetaData( ) throws SQLException
![Page 19: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/19.jpg)
Conexão com o Banco de Dados
� Inconsistências comuns em ambiente concorrente:
� Dirty read (leitura suja): uma transação lê informações que ainda não foram confirmadas por outra transação.
� Non-repeatable read (leitura não-repetida): uma transação recupera um mesmo registro por duas vezes e os valores obtidos são diferentes em função de mudanças realizadas no mesmo por outras transações.
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
outras transações.
� Phantom read (leitura fantasma): uma transação seleciona um conjunto de registros por duas vezes consecutivas e a quantidade de registros recuperados em cada uma delas é diferente em função de terem sido excluídos ou acrescentados registros por outras transações.
![Page 20: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/20.jpg)
Conexão com o Banco de Dados
� Interface java.sql.Connection� Atributos usados no o método setTransactionIsolation( ):
� TRANSACTION_READ_UNCOMMITED: permite que os três tipos de inconsistências.
� TRANSACTION_READ_COMMITED: previne dirty reads, mas permite que non-repeatable reads e phantom reads ocorram.
� TRANSACTION_REPEATABLE_READ: previne dirty reads e non-repeatable reads, mas permite que phantom reads ocorram.
� TRANSACTION_SERIALIZABLE: previne os três tipos de
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� TRANSACTION_SERIALIZABLE: previne os três tipos de inconsistências supracitadas.
![Page 21: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/21.jpg)
Conexão com o Banco de Dados
� Código 35.1 – comercio.sql
� Código 35.2 – ConexaoComercio.java
� Código 35.3 – TesteConexao.java
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 22: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/22.jpg)
Inclusão de Registros
� Instrução INSERT
� Sintaxe
INSERT INTO <TABELA> VALUES(<Valor1>,<Valor2>,..,<ValorN>)
� Exemplos
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
INSERT INTO CATEGORIA VALUES(1,’Livros’)
INSERT INTO CATEGORIA(DESCRICAO) VALUES(’Livros’)
![Page 23: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/23.jpg)
Inclusão de Registros
� Passos:� Abrir uma conexão
� Enviar uma instrução INSERT� Preparar a instrução (PreparedStatement)
� Definir valores para os parâmetros
� Executar a instrução
� Confirmar a transação
� Recuperar a chave gerada (opcional)
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� Recuperar a chave gerada (opcional)
![Page 24: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/24.jpg)
Inclusão de Registros
� ExemploPreparedStatement pst = conexao.prepareStatement("INSERT INTO CATEGORIA (DESCRICAO) VALUES(?)",Statement.RETURN_GENERATED_KEYS);
pst.setString(1, “Livro”);pst.executeUpdate();conexao.commit();ResultSet rs = pst.getGeneratedKeys();rs.next();int chave_primaria = rs.getInt(1);
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
int chave_primaria = rs.getInt(1);
� java.sql.ConnectionPreparedStatement prepareStatement(String sql, int autoGenerateKeys) throws SQLException
� java.sql.Statement� Atributos:
� RETURN_GENERATED_KEYS�NO_GENERATED_KEYS
![Page 25: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/25.jpg)
Inclusão de Registros
� Métodos de java.sql.PreparedStatement� void setString(int parameterIndex, String x)
� void setDate(int parameterIndex, java.sql.Date x)
� void setTime(int parameterIndex, java.sql.Time x)
� void setInt(int parameterIndex, int x)
� void setDouble(int parameterIndex, double x)
� int executeUpdate( ) throws SQLException
� ResultSet getGeneratedKeys( ) throws SQLException
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� ResultSet getGeneratedKeys( ) throws SQLException
� Métodos de java.sql.ResultSet� boolean next( ) throws SQLException
� int getInt(int columnIndex) throws SQLException
� int getString(int columnIndex) throws SQLException
![Page 26: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/26.jpg)
Inclusão de Registros
� Código 35.4 – JFCategoriaIncluir.java
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 27: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/27.jpg)
Recuperação de Registros
� Instrução SELECT
� Sintaxe
SELECT <CAMPOS> FROM <TABELA>
WHERE <CONDIÇÃO>
ORDER BY <CAMPO>
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� Exemplos
SELECT * FROM CATEGORIA
ORDER BY DESCRICAO
SELECT * FROM CATEGORIA
WHERE (CODIGO <= 5) AND (DESCRICAO LIKE ‘%im%’)
ORDER BY DESCRICAO
![Page 28: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/28.jpg)
Recuperação de Registros
� Passos:� Abrir uma conexão
� Enviar uma instrução SELECT� Criar o objeto responsável pelo envio da instrução (Statement)
� Executar a instrução
� Percorrer os registros recuperados
� Exemplo
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� Exemplo
Statement stm = conexao.createStatement();
ResultSet rs = stm.executeQuery("SELECT * FROM CATEGORIA");
while(rs.next( ))
System.out.println(rs.getInt(1) + “ - “ + rs.getString(2));
![Page 29: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/29.jpg)
Recuperação de Registros
� Código 35.5 – JFCategoriaConsultar.java
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 30: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/30.jpg)
Alteração de Registros
� Instrução UPDATE
� Sintaxe
UPDATE <TABELA>
SET <CAMPO1> = <VALOR1>,<CAMPO2> = <VALOR2>
WHERE <CONDIÇÃO>
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� Exemplos
UPTADE CATEGORIA
SET DESCRICAO = ‘Perfumaria e beleza’
WHERE CODIGO = 5
![Page 31: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/31.jpg)
Alteração de Registros
� Passos:� Abrir uma conexão
� Enviar uma instrução UPDATE� Preparar a instrução (PreparedStatement)
� Definir valores para os parâmetros
� Executar a instrução
� Confirmar a transação
� Recuperar a quantidade de registros afetada (opcional)
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� Recuperar a quantidade de registros afetada (opcional)
![Page 32: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/32.jpg)
Alteração de Registros
� Exemplo
PreparedStatement pst = conexao.prepareStatement(
"UPDATE CATEGORIA SET DESCRICAO = ? WHERE CODIGO = ?");
pst.setString(1, “Perfumaria e beleza”);
pst.setInt(2, 5);
pst.executeUpdate();
conexao.commit();
if (pst.getUpdateCount() > 0) System.out.println(“Alterado!”);
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
if (pst.getUpdateCount() > 0) System.out.println(“Alterado!”);
else System.out.println(“Registro não existe!”);
![Page 33: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/33.jpg)
Alteração de Registros
� Código 35.6 – JFCategoriaAlterar.java
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 34: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/34.jpg)
Exclusão de Registros
� Instrução DELETE
� Sintaxe
DELETE FROM <TABELA>
WHERE <CONDIÇÃO>
� Exemplos
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� Exemplos
DELETE FROM CATEGORIA
WHERE CODIGO = 1
![Page 35: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/35.jpg)
Exclusão de Registros
� Passos:� Abrir uma conexão
� Enviar uma instrução DELETE� Preparar a instrução (PreparedStatement)
� Definir valores para os parâmetros
� Executar a instrução
� Confirmar a transação
� Recuperar a quantidade de registros afetada (opcional)
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� Recuperar a quantidade de registros afetada (opcional)
![Page 36: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/36.jpg)
Exclusão de Registros
� Exemplo
PreparedStatement pst = conexao.prepareStatement(
"DELETE FROM CATEGORIA WHERE CODIGO = ?");
pst.setInt(1, 10);
pst.executeUpdate();
conexao.commit();
if (pst.getUpdateCount() > 0) System.out.println(“Excluído!”);
else System.out.println(“Registro não existe!”);
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
else System.out.println(“Registro não existe!”);
![Page 37: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/37.jpg)
Exclusão de Registros
� Código 35.7 – JFCategoriaExcluir.java
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 38: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/38.jpg)
Recuperação de Metadados
� Metadados� Dados sobre dados
� Descrições dos dados
� Estrutura dos dados
� Objetivo� Análise dinâmica sobre a estrutura do banco
� Análise dinâmica sobre um conjunto de resultados
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� Análise dinâmica sobre um conjunto de resultados
![Page 39: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/39.jpg)
Recuperação de Metadados
� API:� java.sql.Connection
� DatabaseMetaData getMetaData( )
� java.sql.DatabaseMetaData� ResultSet getCatalogs( )
� ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types)
� ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern)
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
tableNamePattern, String columnNamePattern)
� java.sql.ResultSet� ResultSetMetaData getMetaData( )
� java.sql.ResultSetMetaData� int getColumnCount( )
� String getColumnLabel(int column)
� int getColumnType(int column)
![Page 40: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/40.jpg)
Recuperação de Metadados
� Código 35.8 – ModeloGrade.java
� Código 35.9 – DBExplorer.java
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 41: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/41.jpg)
Processamento de Instruções SQL
� Código 35.10 – ProcessadorSQL.java
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 42: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/42.jpg)
Estudo de Caso: Registro de Pedidos
� Camada de Transferência:� Categoria.java
� Produto.java
� Cliente.java
� Item.java
� Pedido.java
Categoria
-
-
codigo
descricao
: int
: String
+
+
+
+
Categoria ()
Categoria (int codigo, String descricao)
getCodigo ()
getDescricao ()
: int
: String
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
+
+
+
+
+
+
+
getDescricao ()
setCodigo (int codigo)
setCodigo (String codigo)
setDescricao (String descricao)
toString ()
equals (Object obj)
hashCode ()
: String
: void
: void
: void
: String
: boolean
: int
![Page 43: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/43.jpg)
Estudo de Caso: Registro de Pedidos
� Camada de Persistência� ConexaoComercio.java
� CategoriaDAO.java
� ProdutoDAO.java
� ClienteDAO.java
� ItemDAO
� PedidoDAO
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 44: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/44.jpg)
Estudo de Caso: Registro de Pedidos
� Camada de Persistência
cc
cc
cc
CategoriaDAO
- cc : ConexaoComercio
+
+
+
+
+
+
+
+
CategoriaDAO ()
incluir (Categoria c)
alterar (Categoria c)
excluir (int codigo)
carregarGrade ()
carregarCombo ()
pesquisar (int codigo)
pesquisar (String codigo)
: void
: void
: void
: ResultSet
: Vector<Categoria>
: Categoria
: CategoriaClienteDAO
ConexaoComercio
- conexao : Connection
+
+
ConexaoComercio ()
getConexao () : Connection
PedidoDAO
- cc : ConexaoComercio
+
+
PedidoDAO ()
incluir (Pedido p) : void
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
cccc
+
+
+
+
getConexao ()
fechar ()
confirmarTransacao ()
cancelarTransacao ()
: Connection
: void
: void
: void
ItemDAO
- cc : ConexaoComercio
+
+
ItemDAO ()
incluir (Item item) : void
ProdutoDAO
- cc : ConexaoComercio
+
+
+
+
+
+
+
+
ProdutoDAO ()
incluir (Produto c)
alterar (Produto c)
excluir (int codigo)
carregarGrade ()
carregarCombo ()
pesquisar (int codigo)
pesquisar (String codigo)
: void
: void
: void
: ResultSet
: Vector<Produto>
: Produto
: Produto
![Page 45: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/45.jpg)
Estudo de Caso: Registro de Pedidos
� Camada de Apresentacao:� ModeloGrade
� IFCadastro
� IFCategoria
� IFProduto
� IFCliente
� IFPedidoRegistrar
� DesktopImagem
desktop
DesktopImagem
JDesktopPane
IFCadastro
JInternalFrame
IFCategoria
IFCliente
IFPedidoRegistrar
IFProduto
JFPrincipal
JFrameModeloGrade
AbstractTableModel
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� DesktopImagem
� JFPrincipal
� Classe Principal:� Principal
IFClienteIFProduto
![Page 46: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/46.jpg)
Estudo de Caso: Registro de Pedidos
� Janelas: � IFCategoria
� IFProduto
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 47: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/47.jpg)
Estudo de Caso: Registro de Pedidos
� Janelas:� IFCliente
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 48: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/48.jpg)
Estudo de Caso: Registro de Pedidos
� Janelas: � IFPedidoRegistrar
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 49: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/49.jpg)
Estudo de Caso: Registro de Pedidos
� Janelas: � JFPrincipal
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
![Page 50: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/50.jpg)
Exercício 1
� Amplie o sistema de registro de pedidos que fora apresentado neste capítulo e acrescente uma janela que permita registrar a entrega de um pedido.� Esta janela deve ter apenas uma grade e um botão.
� A grade deve apresentar todos os pedidos que ainda se encontram abertos (com o status igual à ‘A’).
� O botão deverá ser rotulado como “Fechar Pedido” e servirá para marcar o pedido como entregue.
Quando um pedido for marcado como entregue, seu status deve
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� Quando um pedido for marcado como entregue, seu status deve ser modificado para ‘F’ (Fechado) e ele deve ser eliminado imediatamente da grade.
![Page 51: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/51.jpg)
Exercício 2
� Amplie o sistema de registro de pedidos que fora apresentado neste capítulo e acrescente uma janela que permita consultar todos os pedidos que foram registrados entre duas datas.� Esta janela deve conter dois campos de texto formatados para captar a data inicial e a data final do período desejado, deve ter uma grade para apresentar os registros e um botão para acionar a consulta.
� Esta janela também deve ter uma caixa de combinação que
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
� Esta janela também deve ter uma caixa de combinação que permita selecionar uma dentre três opções: visualizar apenas os pedidos que encontram-se abertos, apenas os pedidos fechados ou ambos.
![Page 52: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/52.jpg)
Exercício 3
� Amplie o sistema de registro de pedidos que fora apresentado neste capítulo e acrescente uma janela que permita realizar o cadastro de funcionários.� O registro de cada funcionário deverá ser composto pelos seguintes dados: um código numérico, seu nome completo, seu CPF, seu RG, seu telefone, seu e-mail, sua data de nascimento e seu salário.
� Antes de criar esta janela, acrescente uma nova tabela no banco de dados e a chame de FUNCIONARIO.
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
de dados e a chame de FUNCIONARIO.� Esta tabela deverá ter um campo para cada um dos dados supracitados.
� Defina o código do funcionário como um campo que seja incrementado pelo próprio banco de dados.
![Page 53: SistemasSistemasde de BancoBancode Dados · XML Banco de dados MySQL PostgreSQL Oracle Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra. Introdução SGBD](https://reader031.vdocuments.mx/reader031/viewer/2022012920/5be7377709d3f204758c63cc/html5/thumbnails/53.jpg)
Contato
Com o autor:
Rui Rossi dos Santos
E-mail: [email protected]
Web Site: http://www.ruirossi.pro.br
Com a editora:
Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra
Com a editora:
Editora NovaTerra
E-mail Geral: [email protected]
E-mail Comercial: [email protected]
Web Site: http://www.editoranovaterra.com.br