deitel/deitel, 8e. java – como programar copyright © 2010 pearson education slide 1
TRANSCRIPT
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 1
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 2
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 3
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 4
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 5
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 6
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 7
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 8
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 9
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 10
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 11
Qualquer variável local que for utilizada em uma classe interna anônima deve ser declarada final, caso contrário, ocorre um erro de compilação;
A classe TableRowSorter (do pacote javax.swing.table) pode ser usada para classificar linhas em uma JTable;
Quando o usuário clicar no título de determinada coluna JTable, o TableRowSorter interage com o TableModel subjacente para reordenar as linhas com base nos dados dessa coluna;
O método JTable setRowSorter() especifica o TableRowSorter para JTable.
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 12
JTables podem mostrar agora subconjuntos dos dados do TableModel subjacente. Isso é conhecido como filtragem de dados;
O método JTable setRowFilter() especifica um RowFilter (do pacote javax.swing) para um Jtable;
O método RowFilter static regexFilter() recebe uma String contendo um padrão de expressão regular como seu argumento e um conjunto opcional de índices que especifica quais colunas filtrar.◦ Se nenhum índice for especificado, então todas as colunas são
pesquisadas.
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 13
A interface RowSet fornece vários métodos set que permite especificar as propriedades necessárias para estabelecer uma conexão e criar um Statement;
RowSet também fornece vários métodos get que retornam essas propriedades;
Tipos de objetos RowSet: conectado e desconectado;◦ Um objeto RowSet conectado conecta-se ao banco de dados
uma vez e permanece conectado enquanto o objeto estiver em uso;
◦ Um objeto RowSet desconectado conecta-se ao banco de dados, executa uma consulta para recuperar os dados do banco de dados e depois fecha a conexão.
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 14
Um programa pode alterar os dados em um RowSet desconectado enquanto ele estiver desconectado.◦ Dados modificados podem ser atualizados no banco de dados
depois que um RowSet desconectado restabelecer a conexão com o banco de dados.
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 15
O pacote javax.sql.rowset contém duas subinterfaces de RowSet — JdbcRowSet e CachedRowSet;
JdbcRowSet, um RowSet conectado, atua como um empacotador em torno de um objeto ResultSet e permite aos programadores percorrer e atualizar as linhas no ResultSet;
Um objeto JdbcRowSet é rolável e atualizável por padrão;
CachedRowSet, um RowSet desconectado, armazena os dados em cache de um ResultSet na memória e desconecta-se do banco de dados.
Um objeto CachedRowSet é rolável e atualizável por padrão. Também é serializável, então ele pode ser passado entre aplicativos Java
por uma rede, como a Internet.
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 16
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 17
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 18
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 19
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 20
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 21
O pacote com.sun.rowset fornece implementações de referência da Sun para as interfaces no pacote javax.sql.rowset;
A implementação de referência da Sun da interface JdbcRowSet é JdbcRowSetImpl;
Alguns bancos de dados podem fornecer suas próprias implementações de RowSet;
O método JdbcRowSet setUrl() especifica o URL do BD; O método JdbcRowSet setUsername() especifica o nome de
usuário; O método JdbcRowSet setPassword() especifica a senha; O método Jdbc-RowSet setCommand() especifica a consulta
SQL que será usada para preeencher o RowSet.
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 22
O método JdbcRowSet execute() executa a consulta SQL;
O método execute() realiza quatro ações:◦ Estabelece uma Connection com o banco de dados;◦ Prepara a consulta Statement;◦ Executa a consulta;◦ Armazena o ResultSet retornado pela consulta;
As consultas Connection, Statement e ResultSet são encapsuladas no objeto JdbcRowSet;
O método JdbcRowSet close() fecha as consultas ResultSet, Statement e Connection do RowSet encapsulado.
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 23
No JDK 6, o banco de dados “puro Java” de código-fonte aberto Java DB (a versão com a marca Sun do Apache Derby) vem com o JDK.
Usamos o Java DB para demonstrar PreparedStatements. Antes de poder executar o aplicativo na próxima seção, você deve configurar o
banco de dados AddressBook no Java DB. Utilizamos a versão integrada do Java DB. Há também uma versão de rede que executa de modo semelhante ao DBMS
MySQL introduzido anteriormente no capítulo. Visite developers.sun.com/javadb/reference/docs/ e leia “Getting
Started with Java DB” para obter instruções de instalação e configuração.
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 24
O Java DB vem com vários arquivos em lote para configurá-lo e executá-lo. Deve configurar a variável de ambiente JAVA_HOME para consultar primeiro
diretório de instalação do JDK.
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 25
Instruções para Windows: Abra o arquivo em lote setEmbeddedCP.bat (localizado em C:\Program Files\Sun\JavaDB\bin), localize a linha
@rem set DERBY_INSTALL= e mude-a para
@set DERBY_INSTALL=C:\Program Files\Sun\JavaDB Abra um prompt de comando e use o comando para mudar os diretórios para C:\Program Files\Sun\JavaDB\bin. Então, digite setEmbeddedCP.bat e pressione Enter para configurar as variáveis de ambiente requeridas pelo Java DB.
Mude para o diretório que contém o código desse exemplo. Esse diretório contém um script SQL address.sql que constrói o banco de dados AddressBook.
Execute o comando "C:\Program Files\Sun\JavaDB\bin\ij"
para iniciar a ferramenta de linha de comando para interagir com o Java DB.
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 26
No prompt ij>, digite connect 'jdbc:derby:AddressBook;create=true;user=deitel;password=deitel';
para criar o banco de dados AddressBook no diretório atual. Esse comando também cria o usuário deitel com a senha deitel para acessar o banco de dados.
Para criar a tabela de banco de dados e inserir dados de exemplo no banco de dados, digite
run 'address.sql' Para terminar a ferramenta de linha de comando Java DB, digite
exit;
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 27
A interface PreparedStatement permite criar instruções SQL compiladas que executam mais eficientemente do que os objetos Statement.
Pode também especificar parâmetros, tornando-os mais flexíveis do que as Statements.
Os programas podem executar a mesma consulta repetidamente com valores de parâmetro diferentes.
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 28
Para localizar todos os títulos de livro de um autor com um sobrenome e um nome específicos:
PreparedStatement authorBooks = connection.prepareStatement( "SELECT LastName, FirstName, Title " + "FROM Authors INNER JOIN AuthorISBN " + "ON Authors.AuthorID=AuthorISBN.AuthorID " + "INNER JOIN Titles " + "ON AuthorISBN.ISBN=Titles.ISBN " + "WHERE LastName = ? AND FirstName = ?" );
Os dois pontos de interrogação (?) são um espaço reservado para valores que serão passados como parte da consulta ao banco de dados.
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 29
Antes de executar uma PreparedStatement, o programa deve especificar os valores de parâmetro utilizando os métodos set da interface PreparedStatement.
Para a consulta anterior, ambos os parâmetros são strings que podem ser configuradas com o método PreparedStatement setString como mostrado a seguir:
authorBooks.setString( 1, "Deitel" );authorBooks.setString( 2, "Paul" );
Os números de parâmetro são contados a partir de 1, iniciando com o primeiro ponto de interrogação (?).
A interface PreparedStatement fornece métodos set para cada tipo SQL suportado.
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 30
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 31
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 32
Nosso banco de dados Java DB AddressBook contém uma tabela Addresses com as colunas addressID, FirstName, LastName, Email e PhoneNumber.
A coluna addressID é a chamada coluna de identidade. Essa é a maneira padrão SQL para representar uma coluna autoincrementada. O script SQL que fornecemos para esse banco de dados utiliza a palavra-chave IDENTITY de SQL para marcar a coluna addressID como uma coluna de identidade.
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 33
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 34
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 35
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 36
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 37
Invoque o método Connection prepareStatement para criar uma PreparedStatement.
Chamar o método PreparedStatement executeQuery retorna um ResultSet contendo as linhas que correspondem à consulta.
O método PreparedStatement executeUpdate executa a instrução SQL que modifica o banco de dados.
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 38
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 39
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 40
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 41
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 42
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 43
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 44
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 45
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 46
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 47
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 48
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 49
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 50
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 51
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 52
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 53
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 54
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 55
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 56
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 57
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 58
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 59
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 60
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 61
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 62
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 63
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 64
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 65
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 66
Muitos sistemas de gerenciamento de bancos de dados podem armazenar instruções de SQL individuais ou conjuntos de instruções de SQL em um banco de dados, de modo que os programas que acessam esse banco de dados possam invocá-las.
Tais coleções identificadas de instruções SQL são chamadas de procedures armazenadas.
O JDBC permite aos programas invocar procedures armazenadas usando objetos que implementam a interface CallableStatement.
Além disso, CallableStatements podem especificar parâmetros de saída em que uma procedure armazenada pode colocar valores de retorno.
A interface também inclui métodos para obter os valores de parâmetros de saída retornados de uma procedure armazenada.
Para aprender mais sobre CallableStatements, visite java.sun.com/javase/6/docs/technotes/guides/jdbc/getstart/callablestatement.html#999652
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 67
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 68
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 69
Muitos aplicativos do banco de dados impõem garantias de que uma série de inserções, atualizações e exclusões no banco de dados executem corretamente antes de os aplicativos continuarem o processamento da próxima operação de banco de dados.
O processamento de transação permite que um programa que interage com um banco de dados trate uma operação de banco de dados (ou conjunto de operações) como uma operação única.
Essa operação também é conhecida como operação atômica ou transação. No fim de uma transação, pode-se tomar a decisão de confirmar a transação ou
reverter a transação. Confirmar a transação finaliza a(s) operação(ões) de banco de dados. A reversão da transação deixa o banco de dados no seu estado anterior à operação
de banco de dados.
Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 70
O método Connection setAutoCommit especifica se cada instrução SQL é confirmada depois de ser completada (um argumento true) ou se várias instruções SQL devem ser agrupadas como uma transação (um argumento false).
Se o argumento para setAutoCommit for false, o programa deve seguir a última instrução SQL na transação com uma chamada para o método Connection commit ou método Connection rollback.
A interface Connection também fornece o método getAutoCommit para determinar o estado autocommit para Connection.