Slide 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/installingcs.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 Education 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: Slide 2 Jdk \ jre \ lib \ ext Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 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 Education Slide 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 Education 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; Slide 5 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 -p A 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 Education Slide 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 Education Slide 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 Education Slide 8 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 9 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 10 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 11 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 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\mysqlconnector-java-5.1.7-bin.jar DisplayAuthors Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 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 Education 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. Slide 14 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 15 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 16 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education 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. Slide 17 O método ResultSetMetaData getColumnCount() recupera o número de colunas no ResultSet. Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 18 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education 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. Slide 19 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 Education Slide 20 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 21 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 22 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 23 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 24 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 25 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education 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; Slide 26 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education 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), Slide 27 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 28 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 29 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 30 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 31 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 32 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 33 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 34 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 35 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 36 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 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 Education Slide 38 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 39 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 40 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education Slide 41 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education 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; Slide 42 O método ResultSetResultSet absolute() posiciona o cursor ResultSet em uma linha específica. Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education 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. Slide 43 Deitel/Deitel, 8e. • Java – Como programar • Copyright © 2010 Pearson Education