Deitel/Deitel, 8e. Java – Como programar Copyright © 2010 Pearson Education Slide 1 MySQL 5.0...

Post on 17-Apr-2015

188 views 4 download

Transcript of Deitel/Deitel, 8e. Java – Como programar Copyright © 2010 Pearson Education Slide 1 MySQL 5.0...

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 1

MySQL 5.0 Community Edition é um Sistema de Gerenciamento de Bancos de Dados de código-fonte aberto que executa em muitas plataformas, incluindo Windows, Solaris, Linux e Macintosh;

Mais informações em www.mysql.com. Para instalar o MySQL Community Edition:◦ Requisitos:

dev.mysql.com/doc/refman/5.0/en/installing-cs.html

◦ Download: dev.mysql.com/downloads/mysql/5.0.html

◦ Execute o instalador; ◦ Escolha Typical para Setup Type;

Para configurar o servidor selecione Standard Configuration.

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 2

Para utilizar o MySQL com o JDBC, é preciso instalar o MySQL Connector/J — driver JDBC que permite aos programas acessar bancos de dados MySQL via JDBC;

Download a partir de: dev.mysql.com/downloads/connector/j/5.1.html

Documentação: dev.mysql.com/doc/connector/j/en/connector-j.html.

Diretório no qual descarregar o arquivo .jar do driver em questão: Jdk \ jre \ lib \ ext

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 3

Para que os exemplos executem corretamente, é preciso configurar uma conta de usuário que permita aos usuários criar, excluir e modificar um banco de dados;

Abra um prompt de comando e inicie o servidor do bancos de dados executando o comando mysqld-nt.exe. Notar que esse comando não tem saída — ele simplesmente inicia o servidor MySQL. Não feche essa janela — isso encerra o servidor;

Inicie o monitor MySQL para poder configurar uma conta de usuário, abrir outro prompt de comando e executar o comando mysql -h localhost -u root;

A opção -h indica o host no qual o servidor MySQL está executando — nesse caso o computador local (localhost);

A opção -u indica a conta de usuário que será utilizada para fazer login no servidor — root é a conta de usuário padrão criada durante a instalação para permitir que configure o servidor.

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 4

No prompt mysql>, digite USE mysql;para selecionar o banco de dados predefinido chamado mysql;

Adicione a conta de usuário deitel ao banco de dados predefinido. Execute os seguintes comandos no prompt mysql>:

create user 'deitel'@'localhost' identified by 'deitel‘;grant select, insert, update, delete, create, drop, references, execute on *.* to 'deitel'@'localhost';

◦ Isso cria o usuário deitel com os privilégios necessários para criar os bancos de dados utilizados neste capítulo e manipulá-los;

Digite o comando exit;para terminar o monitor MySQL.

Os passos anteriores podem ser executados através de uma ferramenta administrativa.

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 5

Para cada banco de dados MySQL discutido, é fornecido um script SQL em um arquivo .sql, que configura o banco de dados e suas tabelas. Pode-se executar esses scripts no monitor MySQL;

Para executar o script books.sql: Abra um prompt de comando e use o comando para mudar os

diretórios para o local que contenha o script books.sql; Inicie o monitor MySQL digitando:

mysql -h localhost -u deitel -pA opção -p solicita a senha para a conta de usuário deitel. Quando

solicitado, insira a senha deitel; Execute o script digitando source books.sql;

Isso cria um novo diretório chamado books no diretório data do servidor

Digite exit; para terminar o monitor MySQL monitor.

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 6

Nesta seção, apresentamos dois exemplos; O primeiro exemplo introduz como se conectar a um banco de

dados e consultá-lo; O segundo exemplo demonstra como exibir o resultado da

consulta em um componente JTable.

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 7

O programa a seguir ilustra a conexão com o banco de dados, consultando o banco de dados e processando o resultado.

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

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 12

O URL do banco de dados identifica o nome do banco de dados ao qual se conectar, bem como informações sobre o protocolo utilizado pelo driver JDBC;

O JDBC 4.0 suporta a Descoberta de Driver Automática.◦ Não é mais necessário carregar antes o driver de banco de dados.

Para assegurar que o programa pode localizar a classe de driver, deve-se incluir a localização da classe no classpath do programa ao executá-lo;

Inclua o arquivo mysql-connector-java-5.1.7-bin.jar (no diretório C:\mysql-connector-java-5.1.7) no classpath do programa, como em:

java -classpath .;c:\mysql-connector-java-5.1.7\mysql-connector-java-5.1.7-bin.jar DisplayAuthors

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 13

Um objeto que implementa a interface Connection gerencia a conexão entre o programa Java e o banco de dados;

Os objetos Connection permitem que os programas criem instruções SQL que manipulam o banco de dados;

O método DriverManager static getConnection() tenta se conectar ao banco de dados especificado pelo URL; ◦Argumentos:

uma String que especifica o URL do banco de dados; uma String que especifica o login do usuário; uma String que especifica a senha do usuário.

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 14

O URL jdbc:mysql://localhost/books especifica:◦O protocolo de comunicação (jdbc);◦O subprotocolo para comunicação (mysql);◦A localização do banco de dados (//localhost/books,

onde localhost é o host executando o servidor MySQL e books é o nome do banco de dados/schema);

O subprotocolo mysql indica que o programa utiliza um subprotocolo específico ao MySQL para conectar-se ao banco de dados MySQL.

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 15

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 16

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 17

O método Connection createStatement() gera um objeto que implementa a interface Statement (pacote java.sql). ◦ Usado para enviar instruções SQL para o banco de dados.

O método executeQuery() do objeto Statement envia uma consulta para o banco de dados. ◦ Retorna um objeto que implementa a interface ResultSet (contém os resultados

da consulta); Os métodos de ResultSet permitem que o programa manipule o

resultado da consulta. O ResultSetMetaData de um ResultSet descreve o conteúdo

do ResultSet. ◦ Pode ser usado programaticamente para obter informações sobre nomes de coluna e

tipos do ResultSet. O método ResultSetMetaData getColumnCount() recupera

o número de colunas no ResultSet.

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 18

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 19

A primeira chamada para o método ResultSet next() posiciona o cursor do ResultSet na primeira linha.◦ Retorna o valor boolean true se for capaz de se posicionar na próxima linha; caso

contrário, o método retorna false;

O método ResultSetMetaData getColumnType() retorna um inteiro constante da classe Types (pacote java.sql) que indica o tipo de uma coluna especificada;

O método ResultSet getInt() retorna um valor de coluna como um int;

O método ResultSet getObject() retorna um valor de coluna como um Object.

Os métodos ResultSet get em geral recebem como um argumento um número de coluna (um int) ou um nome de coluna (uma String) indicando que o valor de qual coluna obter;

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 20

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 21

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 22

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 23

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 24

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 25

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 26

O exemplo das Figuras 28.25 e 28.28 permite ao usuário inserir qualquer consulta no programa;

Exibe os resultados de uma consulta em uma JTable, usando um objeto TableModel para fornecer os dados ResultSet para o JTable;

JTable é um componente GUI Swing que pode ser vinculado a um banco de dados para exibir os resultados de uma consulta;

A classe ResultSetTableModel realiza a conexão com o banco de dados via uma TableModel e mantém o ResultSet;

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 27

A classe DisplayQueryResults cria a GUI e especifica uma instância da classe ResultSetTableModel para fornecer dados a JTable;

A classe ResultSetTableModel sobrescreve os métodos TableModel getColumnClass(), getColumnCount(), getColumnName(), getRowCount() e getValueAt() (herdado de AbstractTableModel),

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 28

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 29

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

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

O método Connection createStatement() com dois argumentos recebe o tipo e a concorrência do ResultSet;

O tipo de conjunto de resultados especifica se o cursor do ResultSet é capaz de rolar em ambas as direções ou apenas encaminhar e se o ResultSet é sensível a alterações feitas nos dados subjacentes;

ResultSets que são sensíveis a alterações refletem essas modificações imediatamente depois de elas serem feitas com os métodos da interface ResultSet;

Se um ResultSet não for sensível a alterações, a consulta que produziu o ResultSet deve ser novamente executada para refletir qualquer alteração feita;

A concorrência do conjunto de resultados especifica se o ResultSet pode ser atualizado com os métodos de atualização do ResultSet.

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

O método ResultSetMetaData getColumnClassName() obtém o nome de classe completamente qualificado da coluna especificada;

O método ResultSetMetaData getColumnCount() obtém o número de colunas no ResultSet;

O método ResultSetMetaData getColumnName() obtém o nome da coluna no ResultSet;

O método ResultSetResultSet absolute() posiciona o cursor ResultSet em uma linha específica.

Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson EducationSlide 43

O método ResultSet last() posiciona o cursor ResultSet na última linha no ResultSet;

O método ResultSet getRow() obtém o número da linha atual no ResultSet;

O método fireTableStructureChanged() (herdado da classe AbstractTableModel) notifica qualquer JTable usando esse objeto ResultSetTableModel como seu modelo que a estrutura do modelo mudou.◦Faz com que a JTable preencha novamente suas linhas e

colunas com os novos dados de ResultSet data.