Baixe o app para aproveitar ainda mais
Prévia do material em texto
Técnicas de Programação II MATERIAL TEÓRICO UNIDADE I Autoria: Prof. Me. Douglas Almendro Prof. Me. Hugo Fernandes Revisão Textual: Prof. Esp. Claudio Pereira do Nascimento Interface Gráfica e Consulta a Banco de Dados Não se esqueça de se alimentar e de se manter hidratado. Conserve seu material e local de estudos sempre organizados. Procure manter contato com seus colegas e tutores para trocar ideias! Isso amplia a aprendizagem. Seja original! Nunca plagie trabalhos. Determine um horário fixo para estudar. Aproveite as indicações de Material Complementar. Mantenha o foco! Evite se distrair com as redes sociais. Orientações de estudo Para que o conteúdo desta Disciplina seja bem aproveitado e haja maior aplicabilidade na sua formação acadêmica e atuação profissional, siga algumas recomendações básicas: Assim: Organize seus estudos de maneira que passem a fazer parte da sua rotina. Por exemplo, você poderá determinar um dia e horário fixos como seu “momento do estudo”; Procure se alimentar e se hidratar quando for estudar; lembre-se de que uma alimentação saudável pode proporcionar melhor aproveitamento do estudo; No material de cada Unidade, há leituras indicadas e, entre elas, artigos científicos, livros, vídeos e sites para aprofundar os conhecimentos adquiridos ao longo da Unidade. Além disso, você também encontrará sugestões de conteúdo extra no item Material Complementar, que ampliarão sua interpretação e auxiliarão no pleno entendimento dos temas abordados; Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de discussão, pois irão auxiliar a verificar o quanto você absorveu de conhecimento, além de propiciar o contato com seus colegas e tutores, o que se apresenta como rico espaço de troca de ideias e de aprendizagem. Interface Gráfica e Consulta a Banco de Dados UNIDADE I Introdução Ao longo de nossa disciplina, iremos estudar di- versos conceitos de técnicas de programação uti- lizando a linguagem de programação Java. Iremos explorar conceitos de acesso e manipulação de da- dos em um Banco de dados. A Ferramenta de desenvolvimento da linguagem Java utilizada no estudo será o Netbeans e o banco de dados será o MySQL. Para dar seguimento aos estudos, você precisa ter instalado em seu computador: • Netbeans 7 ou superior; • JDK 6 ou superior; e • O serviço MySQL ativo no computador. EXPLORE Curso POO Java – Instalando o JDK e NetBeans. Disponível em: https://youtu.be/Ucyx_QPfDng. Interface Gráfica com Acesso a Consulta de Banco de Dados Nesta Unidade, desenvolveremos uma aplicação gráfica que se conectará ao banco de dados MySQL via driver JDBC, além de permitir a visualização e navegação entre os registros da tabela Curso que iremos criar nos próximos passos desta unidade. Essa atividade é bem comum para o usuário, pois, caso ele queira ir para o próximo registro de sua in- terface, basta ir até o componente que indica o pró- ximo registro – e assim por diante, para o registro anterior, para o último ou o primeiro. Objetivos • Explorar conceitos para acesso e manipulação de dados em banco de dados por meio da linguagem Java; • Conhecer como executar e configurar um ambiente de servidor de serviços de banco de dados; • Criar uma base de dados e inserir dados em uma tabela; • Desenvolver uma aplicação Java capaz de acessar e navegar entre registros de um banco de dados MySQL. 6 Contudo, antes de começar a desenvolver nossa aplicação, devemos configu- rar o servidor de banco de dados em nosso computador, em seguida, precisa- mos criar uma base de dados e, por fim, criar e popular uma tabela de banco de dados. É com esse banco de dados que nossa aplicação irá se comunicar. Preparando o Ambiente: Servidor de Banco de Dados Para o nosso ambiente de estudo, utilizaremos o software Uniform Server como servidor de serviço de banco de dados MySQL. Esse software é portable, ou seja, não é necessário a instalação, desse modo economizaremos tempo e espaço em disco. EXPLORE Ferramentas essenciais para gerir a base de dados. Disponível em: https://goo.gl/76k68n. Passo 1: Baixando o Servidor EXPLORE Baixe o Uniform Server acessando o link: https://goo.gl/k0yMEi. Localize o arquivo e clique duas vezes sobre o executável, escolha a pasta onde deseja extrair o programa e clique no botão Extract. Figura 1 – Extraindo o arquivo Acesse a pasta onde o programa foi extraído, localize e execute o arquivo UniController. Em seguida, digite root para a senha do Root e clique em OK. Na próxima tela, clique em OK novamente. 7 Interface Gráfica e Consulta a Banco de Dados UNIDADE I Figura 2 – Executando o arquivo UniController Nota, criamos a senha para o Root apenas na primeira vez que executamos o Uniform Server. Passo 2: Iniciando o serviço Ative o serviço MySQL clicando no botão Start MySQL. Se o serviço for iniciali- zado com sucesso, o quadro ao lado do botão ficará verde. Figura 3 – Iniciando o serviço 8 Passo 3: Criando uma base de dados Crie uma base de dados clicando no menu MySQL/ Database create – delete. Figura 4 – Criando uma Database Digite MinhaDM no campo Enter database name to create. Clique em Create Database e feche a tela. Figura 5 – Nomeando uma Database 9 Interface Gráfica e Consulta a Banco de Dados UNIDADE I Na tela principal do UniServer, confira se o serviço está rodando (indicador em verde) e minimize a aplicação. Nunca feche esse aplicativo. Figura 6 – Reiniciando o serviço Feito isso, a aplicação vai para a bandeja do Windows – para maximizar o programa, basta só clicar duas vezes sobre o ícone. Figura 7 – Aplicação na bandeja do Windows A partir de agora, temos o serviço do banco de dados MySQL rodando e con- figurado em nosso computador. Passo 4: Criando uma tabela Para acessar nossa base de dados e, desse modo, criar a tabela que nossa aplicação Java irá acessar, iremos utilizar a ferramenta Heidisql. Um software de acesso à banco de dados. EXPLORE Para isso, baixe o software Heidisql pelo seguinte link: https://goo.gl/PUKPxj. 10 Extraia a pasta baixada e localize o arquivo heidisql. Execute-o. Figura 8 – Executando o arquivo Heidisql Na tela seguinte iremos criar uma conexão com o banco de dados, para isso, clique no botão New. Figura 9 – Criando uma nova conexão Digite a senha do usuário root (root). Figura 10 – Configurando a conexão 11 Interface Gráfica e Consulta a Banco de Dados UNIDADE I A seguir, clique no botão Save e na sequência no botão Open. Figura 11 – Salvando as configurações de conexão Na tela principal, localize e selecione o banco de dados minhadb. Figura 12 – Acessando a Database Com esses passos, conectamos à nossa base de dados (minhadb) por meio do software heidisql, pelo qual podemos manipular a nossa base de dados, ou seja, criar e excluir tabelas, exibir, inserir, alterar e excluir dados entre outros comandos. Nosso próximo passo será criar uma tabela e inserir dados nela. 12 Utilizando instruções SQL, iremos criar uma tabela chamada Curso. Para isso, selecione a base de dados minhadb e clique na aba “Consulta”. Figura 13 – Executando uma consulta Na tela de consulta digite o código abaixo no local indicado pelo número 1. Em seguida, pressione a tecla F9 (ou o botão indicado no passo 2 dessa mesma figura): CREATE TABLE `curso` ( `Sigla` CHAR(10) , `Nome` VARCHAR(64) , `Descricao` VARCHAR(256) ) Figura 14 – Executando um script SQL 13 Interface Gráfica e Consulta a Banco de Dados UNIDADE I Para visualizar a tabela, atualize o banco de dados, para isso, clique com o bo- tão direito do mouse sobre a base de dados minhadb e escolha a opção Atualizar. Figura 15 – Atualizando a visualização da IDE Feito isso, podemos visualizar a tabela que acabamos de criar (Curso). Figura 16 – Visualizando o resultado do script SQL 14 O próximo passo será inserir dados em nossa tabela curso. Para isso, com a tabela curso selecionada, acesse aaba Consulta e digite a seguinte instrução SQL. Insert into curso (sigla, nome, descricao) Values (‘Historia’, ‘HIST’, ‘Curso de Bacharelado’), (‘Geografia’, ‘GEO’, ‘Curso de Licenciatura’), (‘Língua Portuguesa’, ‘LPTO’, ‘Curso de Licenciatura’), (‘Pedagogia’, ‘PED’, ‘Curso de Licenciatura’), (‘Análise de Sistemas’, ‘ADS’, ‘Tecnólogo’), (‘Adm de Banco de dados’, ‘ABD’, ‘Tecnólogo’), (‘Gestão de TI’, ‘GTI’, ‘Tecnólogo’) Figura 17 – Executando script SQL de Insert Para visualizar os dados inseridos, atualize o banco de dados, para isso, clique com o botão direito do mouse sobre a tabela Curso e escolha a opção Atualizar. Figura 18 – Atualizando dados da IDE 15 Interface Gráfica e Consulta a Banco de Dados UNIDADE I Em seguida, selecione a aba Dados. Figura 19 – Visualizando o resultado do script SQL Com esse procedimento, inserimos dados em nossa tabela Curso e podemos iniciar o desenvolvimento de nossa aplicação Java. EXPLORE Sintaxe SQL – Create table. Disponível em: https://goo.gl/76ZJM4. Criando uma Aplicação Java com Acesso a Banco de Dados Passo 1 Abra o Netbeans, clique no menu Arquivo/Novo Projeto. Escolha o tipo do projeto que é Java / Aplicação Java, e clique no botão Próximo. Digite AppSelect no campo Nome do Projeto. Escolha o local de salvamento do projeto. Desmarque a opção Criar Classe Principal. Feito isso, clique no botão Finalizar. Figura 20 – Criando um novo projeto NetBeans 16 Passo 2 Clique no nome do projeto com o botão direito do mouse e em seguida sele- cione a opção Novo/Form JFrame. Na tela seguinte, digite no campo Nome da Classe: Principal. Clique em Finalizar. Figura 21 – Adicionando um Form Jframe Em seguida, clique em qualquer lugar vazio do Frame com o botão direito do mouse e selecione a opção Propriedades. Na aba Código, selecione a opção Gerar Código de redimensionamento no campo Política de Tamanho de Form e marque a opção do campo Gerar Centralizado. Feito isso, clique no botão Fechar. Figura 22 – Configurando redimensionamento 17 Interface Gráfica e Consulta a Banco de Dados UNIDADE I De volta à tela de design, clique com o botão direito do mouse em cima do Frame e selecione a opção Definir Layout/Layout Nulo. Figura 23 – Configurando Layout Passo 3 Adicione o Drive JDBC MySQL ao projeto Netbeans. Para isso, clique com o botão direito sobre a pasta Bibliotecas e selecione a opção Adicionar Biblioteca. Figura 24 – Adicionando biblioteca 18 Na tela a seguir, localize e selecione a opção Driver JDBC do MySQL e clique em Adicionar Biblioteca. EXPLORE JDBC: Acessando Bancos de Dados em Java. Disponível em: https://goo.gl/YSxZ4Z. Figura 25 – Adicionando drive JDBC Passo 4 Acesse a área de código. Figura 26 – Acessando o código fonte 19 Interface Gráfica e Consulta a Banco de Dados UNIDADE I Digite o seguinte código logo no início da classe: import javax.swing.*; import java.sql.*; Figura 27 – Importando pacotes Esse código importa as classes dos pacotes java.sql e java.swing. Em seguida, crie a variável logo abaixo da linha Public class Principal. public ResultSet rs; Figura 28 – Criando uma variável global 20 Passo 5 Arraste um botão para dentro do Form. Redimensione o botão e altere seu texto para Abrir Conexão – para afazer isso, clique com o botão direito do mouse sobre o botão e escolha a opção Alterar Texto. Figura 29 – Adicionando um botão Passo 6 Arraste um Campo de Texto para dentro do Form. Redimensione-o e altere seu nome de variável – para isso, clique com o botão direito do mouse sobre o campo de texto e escolha a opção Alterar o Nome da Variável. Figura 30 – Nomeando uma variável 21 Interface Gráfica e Consulta a Banco de Dados UNIDADE I Na sequência, digite: txtSigla Figura 31 – Digitando o nome da variável Em seguida, clique com o botão direito do mouse sobre o campo de texto e selecione a opção Editar texto. Apague o conteúdo para que o campo de texto fique em branco. Figura 32 – Adicionando uma caixa de texto Adicione mais um campo de texto ao Form logo abaixo do campo de texto que acabamos de adicionar. Altere seu nome de variável para txtNome e tam- bém apague seu texto. Por fim, arraste um componente Área de texto ao Form logo abaixo do último Campo de Texto e altere seu nome de variável para txtDescricao. O resultado esperado podemos ver na figura a seguir: Figura 33 – Layout da aplicação 22 Para que nossa aplicação fique mais intuitiva, adicione Labels ao lado es- querdo de cada campo de texto, como na figura abaixo: Figura 34 – Layout da aplicação com labels Passo 7 Nesse passo iremos criar um método que abrirá a conexão com o banco de dados, selecionar o primeiro registro da tabela Curso e atribuir a cada campo de texto de nossa aplicação, exibindo assim a informação ao usuário. Na área de design, dê duplo clique sobre o botão Abrir Conexão. Essa ação cria o método ActionPerformed para um componente Button. Feito isso, somos direcionados para a área de codificação. Nesse método, digite o seguinte código: Connection conn = null; Statement stmt; try { Class.forName(“com.mysql.jdbc.Driver”); conn = DriverManager.getConnection(“jdbc:mysql://localhost/minhadb”, “root”, “root”); stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); rs = stmt.executeQuery(“Select * from curso”); rs.first(); 23 Interface Gráfica e Consulta a Banco de Dados UNIDADE I txtSigla.setText(rs.getString(“sigla”)); txtNome.setText(rs.getString(“Nome”));// txtDescricao.setText(rs.getString(“descricao”)); } catch (ClassNotFoundException e) { System.out.println(e); } catch (SQLException e) { System.out.println(e); } Todo o comando que contenha conexão e comando SQL têm por obrigação ser colocado dentro de um bloco try catch para que, se alguma anomalia de co- mandos ou conexões ocorrer, a aplicação não travará e ele a redirecionará para o tratamento do erro. Figura 35 – Código fonte do botão Explicando o código: • Linha 84 – Cria uma variável do tipo Connection de nome conn e atribui o valor null para ela. • Linha 85 – Cria uma variável do tipo Statement de nome stmt. • Linha 88 – Esse comando registra a Classe do driver JDBC. • Linha 89 – Cria um objeto de conexão passando como parâmetros o ende- reço, usuário e senha do banco de dados. 24 • Linha 91 – Cria um objeto Statement, é através dele que executaremos operações no banco de dados. • Linha 93 – Executa comando Statement que recebe como parâmetro a instru- ção SQL e atribui o resultado a uma variável do tipo ResultSet. Lembrando que essa variável foi declarada como pública logo no início da classe no passo 4. • Linha 94 – Executa comando que posiciona o resultado no primeiro regis- tro retornado da seleção da tabela Curso. • Linha 95 – Atribui o valor do campo sigla da tabela Curso referente ao registro selecionado ao Campo de texto. • Linha 96 – Atribui o valor do campo Nome da tabela Curso referente ao registro selecionado ao Campo de texto. • Linha 97 – Atribui o valor do campo Descricao da tabela curso referente ao registro selecionado ao Campo de texto. • Linhas 100 e 102 – Caso ocorra alguma exceção, o sistema exibe o erro. Testando a Aplicação: Clique no menu Executar/Criar Projeto ou pressione F11. Em seguida, pressione F6 ou clique no menu Executar/ Executar Projeto. Na tela seguinte, clique em OK. Lembre-se de que o serviço do MySQL deve estar ATIVO para que nossa aplicação possa se conectar corretamente ao banco de dados. Podemos ver o resultado de nossa codificação. Clique no botão Abrir Conexão. Figura 36 – Testando a aplicação Nossa aplicação já está efetuando a conexão com o banco de dados e selecio- nando e exibindo o primeiro registro da tabela Curso. Nos próximos passos, de- senvolveremos meios para navegar entre os registros existentes da tabela Curso. 25 Interface Gráfica e Consulta a Banco de Dados UNIDADE I Passo 8 Arraste quatro botões para dentro doForm e altere o texto de cada botão de acordo com a figura abaixo: Figura 37 – Layout da aplicação Adicione também um Label e altere seu texto para: Navegação entre os re- gistros da tabela Curso. Assim nossa aplicação ficará mais intuitiva. Iremos criar uma codificação para cada botão de acordo com a função pro- posta. Ou seja: para o botão Primeiro, exibiremos na tela o primeiro registro da tabela Curso; para o botão Anterior, exibiremos o registro exposto anterior- mente; e daí por diante. Passo 9 Dê duplo clique sobre o botão Primeiro – essa ação cria o método ActionPerformed para um componente Button. Feito isso, somos direcionados para área de codificação. Nesse método, digite o seguinte código: try { rs.first(); txtSigla.setText(rs.getString(“sigla”)); txtNome.setText(rs.getString(“Nome”));// txtDescricao.setText(rs.getString(“descricao”)); 26 } catch (SQLException e) { System.out.println(e); } Figura 38 – Código fonte do Botão “Primeiro” Explicando o código: • Linha 139 – Executa o comando da variável rs do tipo ResultSet, que posiciona o resultado no primeiro registro retornado da seleção da tabela Curso. • Linha 140 – Atribui o valor do campo sigla da tabela Curso referente ao registro selecionado ao Campo de texto. • Linha 141 – Atribui o valor do campo Nome da tabela curso referente ao registro selecionado ao Campo de texto. • Linha 142 – Atribui o valor do campo Descricao da tabela curso referente ao registro selecionado ao Campo de texto. • Linha 145 – Caso ocorra alguma exceção, o sistema exibe o erro. Passo 10 Dê duplo clique sobre o botão Anterior. Essa ação cria o método ActionPerformed para um componente Button. Feito isso, somos direcionados para a área de codificação. Nesse método, digite o seguinte código: try { rs.previous(); txtSigla.setText(rs.getString(“sigla”)); txtNome.setText(rs.getString(“Nome”));// txtDescricao.setText(rs.getString(“descricao”)); } catch (SQLException e) { System.out.println(e); } 27 Interface Gráfica e Consulta a Banco de Dados UNIDADE I Figura 39 – Código fonte do Botão “Anterior” Explicando o código: • Linha 157– Executa o comando da variável rs do tipo ResultSet, que posi- ciona o resultado no registro anterior tendo como base o registro de posi- ção atual referente à seleção da tabela Curso. • Linha 158 – Atribui o valor do campo sigla da tabela Curso referente ao registro selecionado ao Campo de texto. • Linha 159 – Atribui o valor do campo Nome da tabela Curso referente ao registro selecionado ao Campo de texto. • Linha 160 – Atribui o valor do campo Descricao da tabela Curso referente ao registro selecionado ao Campo de texto. • Linha 163 – Caso ocorra alguma exceção, o sistema exibe o erro. É importante ressaltar que, caso o cursor do resultset já esteja no início, ele apontará para uma posição inexistente, logo, temos um erro em tempo de execução. Nesses casos, sugerimos o seguinte código: try { if (rs.isFirst()) { JOptionPane.showMessageDialog(null, “Você já está no primeiro registro”); } else { rs.previous(); txtSigla.setText(rs.getString(“sigla”)); txtNome.setText(rs.getString(“Nome”));// txtDescricao.setText(rs.getString(“descricao”)); } } catch (SQLException e) { System.out.println(e); } } 28 O comando de decisão if (rs.isFirst()) está fazendo o seguinte: • Perguntando ao resultset se ele já está apontando para o primeiro registro: caso esteja, não precisamos ir para o registro anterior; caso contrário, aí sim podemos ir para o próximo registro executando o rs.previous. Passo 11 Dê duplo clique sobre o botão Próximo. Essa ação cria o método ActionPerformed para um componente Button. Feito isso, somos direcionados para área de codificação. Nesse método, digite o seguinte código: try { rs.next(); txtSigla.setText(rs.getString(“sigla”)); txtNome.setText(rs.getString(“Nome”));// txtDescricao.setText(rs.getString(“descricao”)); } catch (SQLException e) { System.out.println(e); } Figura 40 – Código fonte do Botão “Próximo” Explicando o código: • Linha 175 – Executa o comando da variável rs do tipo ResultSet, que posi- ciona o resultado no próximo registro tendo como base o registro de posi- ção atual referente à seleção da tabela Curso. • Linha 176 – Atribui o valor do campo sigla da tabela Curso referente ao registro selecionado ao Campo de texto. • Linha 177 – Atribui o valor do campo Nome da tabela Curso referente ao registro selecionado ao Campo de texto. • Linha 178 – Atribui o valor do campo Descricao da tabela Curso referente ao registro selecionado ao Campo de texto. 29 Interface Gráfica e Consulta a Banco de Dados UNIDADE I • Linha 181 – Caso ocorra alguma exceção, o sistema exibe o erro. Nesse caso, é importante mostrar que, caso o cursor do resultset já esteja no fim, ele apontará para uma posição inexistente, logo, temos um erro em tempo de execução. Nesses casos, sugerimos o seguinte algoritmo: try { if (rs.isLast()) { JOptionPane.showMessageDialog(null, “Você já está no último registro”); } else { rs.next(); txtSigla.setText(rs.getString(“sigla”)); txtNome.setText(rs.getString(“Nome”));// txtDescricao.setText(rs.getString(“descricao”)); } } catch (SQLException e) { System.out.println(e); } } O comando de decisão if (rs.isLast()) está fazendo o seguinte: • Perguntando ao resultset se ele já está apontando para o último registro: caso esteja, não precisamos ir para o próximo; caso contrário, podemos ir para o próximo registro executando o rs.next(). Passo 12 Dê duplo clique sobre o botão Último – essa ação cria o método ActionPerformed para um componente Button. Feito isso, somos direcionados para área de codificação. Nesse método, digite o seguinte código: try { rs.last(); txtSigla.setText(rs.getString(“sigla”)); txtNome.setText(rs.getString(“Nome”));// txtDescricao.setText(rs.getString(“descricao”)); 30 } catch (SQLException e) { System.out.println(e); } Figura 41 – Código fonte do Botão “Último” Explicando o código: • Linha 193 – Executa comando da variável rs do tipo ResultSet, que posiciona o resultado no último registro retornado da seleção da tabela Curso. • Linha 194 – Atribui o valor do campo sigla da tabela Curso referente ao registro selecionado ao Campo de texto. • Linha 195 – Atribui o valor do campo Nome da tabela Curso referente ao registro selecionado ao Campo de texto. • Linha 196 – Atribui o valor do campo Descricao da tabela Curso referente ao registro selecionado ao Campo de texto. • Linha 199 – Caso ocorra alguma exceção, o sistema exibe o erro. Testando a Aplicação: Clique no menu Executar/Criar Projeto ou pressione F11. Em seguida, pressione F6 ou clique no menu Executar/ Executar Projeto. Para visualizar o resultado das novas codificações, clique primeiro no botão Abrir Conexão e, em seguida, clique em qualquer dos quatros botões. Sempre lembrando de que o serviço do MySQL deve estar ATIVO para que nossa aplicação possa se conectar corretamente com o banco de dados. 31 Interface Gráfica e Consulta a Banco de Dados UNIDADE I Figura 42 – Executando a aplicação Chegamos ao final de nossa unidade. 32 Material Complementar Indicações para saber mais sobre os assuntos abordados nesta Unidade: Sites Caelum Bancos de dados e JDBC. https://goo.gl/LWBQKu Vídeos Criando um Projeto Java no NetBeans https://youtu.be/osroTWOzPTI Introdução ao Java e ao NetBeans https://youtu.be/vQUQ_CoaRVc Conexão Java - MYSQL - JDBC https://youtu.be/52ru7yeohAk 33 Interface Gráfica e Consulta a Banco de Dados UNIDADE I Referências GONÇALVES, Edson. Dominando NetBeans. Rio de Janeiro: Ciência Moderna, 2006. HEFFELFINGER, David R. Java EE 7 Development with NetBeans 8. Packt Publishing Ltd, 2015. NETBEANS, I. D. E. Disponível em: <http://www.netbeans.org>. Acesso em: 19/06/2018. 34 São Paulo 2018
Compartilhar