Baixe o app para aproveitar ainda mais
Prévia do material em texto
Técnicas de Programação Eventos, Aplicativos com Banco de Dados e Organização de Componentes De Layouts Material Teórico Responsável pelo Conteúdo: Prof. Ms. Douglas Almendro Revisão Textual: Profª. Ms. Selma Aparecida Cesarin 5 Estamos iniciando nossos estudos sobre Eventos, Aplicativos com Banco de Dados, da Disciplina de Técnicas de Programação. Ao término deste estudo, desejamos que você seja capaz de interpretar e criar uma interface gráfica com todas as propriedades que a linguagem disponibiliza juntando com o Banco de Dados. Para ajudá-lo(a), realize a leitura dos textos indicados, acompanhe e refaça os exemplos resolvidos, além de treinar com as atividades práticas disponíveis e suas resoluções, ao final do conteúdo. · Nesta Unidade 4 iremos aprender como conectar nossa aplicação a um Banco de dados por meio da API JDBC do Java. · Desenvolveremos uma aplicação “CRUD”, que é o acrônimo de Create, Read, Update e Delete. · O Banco de dados que usaremos é o MySQL. É um banco gratuito, de fácil instalação, e é um dos mais importantes bancos de dados relacionais do mercado. Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts · Operações com Banco de Dados e JDBC · Criando uma Base de Dados MYSQL · Criando uma Tabela no MYSQL · Criando uma Aplicação CRUD Em JAVA 6 Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts Contextualização Nesta Unidade, vamos construir um projeto mais elaborado, na ferramenta NetBeans. Siga atentamente o tutorial de criação de projetos e pacotes. Abordaremos alguns componentes farão parte do layout da tela de uma interface gráfica, juntamente com o Banco de dados. Assim, durante o curso, veremos, também, que existem várias situações nas quais podemos usar os componentes gráficos, incluindo-os nos projetos mais elaborados. Esse ferramental teórico servirá para sua vida como analista/programador. 7 Operações com Banco de Dados e JDBC O QUE É JDBC ? JDBC significa Java Database Connectivity. É uma API Java padrão para banco de dados independente de conectividade entre a linguagem de programação Java e uma grande variedade de bancos de dados. Esta API fornece um conjunto de interfaces para cada uma das tarefas comumente associado ao uso de banco de dados, como por exemplo: · Conexão com um banco de dados; · Consultas no banco de dados; · Visualização ou Alteração de registros. O Pacote para acessar essas interfaces é java.sql. Dentro do JDBC, ainda existe outro componente indispensável para acessar o Banco de dados, o Driver. Para conectarmos a um Banco de dados, precisamos fazer uso do Driver específico para o Banco. Explore Saiba mais sobre o Driver MySQL em: http://dev.mysql.com/doc/connector-j/en/index.html. VAMOS À PRÁTICA Antes de qualquer coisa, precisamos criar o ambiente de Banco de dados. Devemos ter um serviço de banco de dados rodando (Servidor de Banco de dados) e uma Database com a tabela que nossa aplicação vai manipular. Como dito, iremos usar o MySQL como Banco de dados de nossa aplicação. Para o nosso exemplo, iremos baixar uma versão Portable de um servidor MySQL, o Uniform Server. Saiba mais sobre esse software em http://www.uniformserver.com/. Para criar as tabelas necessárias para a nossa aplicação, usaremos o Heidisql. Saiba mais sobre esse software em http://www.heidisql.com/ http://dev.mysql.com/doc/connector-j/en/index.html http://www.uniformserver.com/ http://www.heidisql.com/ 8 Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts Criando uma Base de Dados MYSQL Passo 1 Baixe o Uniform Server acessando o link: http://sourceforge.net/projects/miniserver/files/ latest/download?source=files. Localize o arquivo e clique duas vezes sobre o executável e selecione a opção “Extract”. Após extrair todos os arquivos, localize e execute o arquivo “UniController”. Digite 123 para a senha do Root e clique em OK. Na próxima tela, clique em OK novamente. Passo 2 Ative o serviço MySQL clicando no botão “Start MySQL”. Se o serviço for inicializado com sucesso, o quadro ao lado do botão ficará verde. http://sourceforge.net/projects/miniserver/files/latest/download?source=files http://sourceforge.net/projects/miniserver/files/latest/download?source=files 9 Passo 3 Crie uma base de dados clicando no menu MySQL/Database create – delete. Digite “dbAula4” no campo Enter database name to create e clique em Create Database e feche a tela. 10 Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts Na tela principal do UniServer, confira se o Serviço está rodando (indicador em verde) e minimize a aplicação. Nunca feche este aplicativo. Feito isso, a aplicação vai para a bandeja do Windows; para maximizar o programa, é só clicar duas vezes sobre o ícone. 11 Concluindo todos esses passos, temos: · Um serviço MySQL rodando; · Uma Base de dados MySQL ativa. Criando uma Tabela no MYSQL Passo 1 Baixe o Heidisql acessando o link: http://www.heidisql.com/downloads/releases/ HeidiSQL_8.3_Portable.zip. Extraia a pasta baixada, localize o arquivo “heidisql” e execute-o. http://www.heidisql.com/downloads/releases/HeidiSQL_8.3_Portable.zip http://www.heidisql.com/downloads/releases/HeidiSQL_8.3_Portable.zip 12 Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts Na tela seguinte, clique no botão “New”. É preciso apenas digitar a senha do root (123); a configuração desta tela deve ser como na figura a seguir: 13 Clique no botão “Save” e em seguida no botão “Open”. Passo 2 Clique sobre “dbaula4”. 14 Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts Na aba “Query”, digite a seguinte instrução SQL: CREATE TABLE `curso` ( `Sigla` CHAR(10) , `Nome` VARCHAR(64) , `Descricao` VARCHAR(256) ) Em seguida, pressione a tecla F9 ou clique no botão indicado na figura a seguir. 15 Agora, vamos dar um “refresh” para atualizar as informações exibidas de nossa base de dados. Clique com o botão direito do mouse sobre a nossa database e escolha a opção “Refresh”. Podemos agora perceber que foi criada uma tabela com o nome de Curso. Concluímos o ambiente de banco de dados. Agora podemos seguir adiante e criar uma aplicação que vai se conectar e manipular tabelas em nosso banco de dados. 16 Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts Criando uma Aplicação CRUD Em JAVA Para essa etapa, precisamos: · Netbeans7 ou superior; · SDK Java 6 ou superior; · Acesso a um banco de dados MySQL. Como já vimos, “CRUD” é o acrônimo de Create, Read, Update e Delete. Iremos desenvolver uma aplicação que terá acesso a um banco de dados MySQL. Nossa aplicação irá executar a inserção, alteração, leitura e exclusão de dados em uma tabela. Para nosso exemplo, certifique-se sempre se o serviço de banco de dados está ativo. Vamos à Prática Passo 1 Abra o Netbeans, clique no menu Arquivo/Novo Projeto. 17 Escolha a opção “Aplicação Java”. Digite “Aula 4” no campo Nome do Projeto. Em seguida, clique no botão “Procurar”. 18 Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts Crie uma pasta chamada Aula 4 na área de trabalho e clique em abrir. Na tela seguinte, clique em Finalizar. Passo 2 Clique no nome do projeto com o botão direito do mouse e em seguida selecione a opção Novo/FormJFrame. 19 Digite “Principal” no campo Nome da Classe e clique em finalizar. Passo 3 Clique com o botão direito do mouse em cima do Frame e selecione a opção Definir Layout/ Layout Nulo. 20 Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts Abra a paleta Swing e adicione os componentes, como na figura a seguir. Os componentes a serem adicionados são: · 8 – Botões (JButton); · 2 – Campos de texto (JTextField);· 1 – Área de Texto (JTextArea); · 3 – Rótulos (JLabel); Altere a propriedade “Nome da variável” dos seguintes componentes: · Para o campo referente à Sigla, altere para “txtSigla”; · Para o campo referente à Nome, altere para “txtNome”; · Para o campo referente à Descrição, altere para “txtDescr”. 21 Lembrando que para acessar a propriedade “Nome da variável” do componente, é preciso clicar com o botão direito do mouse sobre o componente, selecionar a opção Propriedades e na Aba código alterar a propriedade desejada. Passo 3 Adicione o Drive JDBC MySQL. Clique com o botão direito sobre a pasta Bibliotecas e selecione a opção Adicionar Biblioteca. 22 Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts Na tela a seguir, localize e selecione a opção Driver JDBC do MySQL e clique em Adicionar Biblioteca. Passo 4 Importe as classe dos pacotes javax.swing e java.sql digitando nas primeiras linhas do código Java o seguinte: importjavax.swing.*; importjava.sql.*; Crie as seguintes variáveis logo a seguir da linha Public class Principal: public Connection conn = null; public Statement stmt; public ResultSet rs; 23 Passo 5 Crie um evento ActionPerformed para o botão “Inserir”. No evento criado, digite o seguinte código. try { Class.forName(“com.mysql.jdbc.Driver”); conn = DriverManager.getConnection(“jdbc:mysql://localhost/dbaula4”, “root”, “123”); stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); String sql = “INSERT INTO cursoVALUES(‘” + txtSigla.getText() + “’,’” + txtNome.getText() + “’,’” + txtDesc.getText() + “’)”; JOptionPane.showMessageDialog(null, sql); int i = 0; i = stmt.executeUpdate(sql);//executando o comando sql 24 Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts stmt.close(); if (i > 0) { JOptionPane.showMessageDialog(null, “Curso cadastrado com sucesso!”); abreTabela(); } } catch (ClassNotFoundException e) { System.out.println(e); } catch (SQLException e) { System.out.println(e); } Vamos à explicação do código • Linha 187 – Esse comando registra a Classe do Driver JDBC; • Linha 188 – Cria um objeto de conexão, passando como parâmetros o endereço, usuário e senha do banco de dados; • Linha 190 – Cria um objeto Statement e é por meio desse objeto que iremos executar operações no banco de dados; • Linha 192 – Atribui uma instrução SQL a uma variável string; • Linha 196 – Para fins didáticos, exibimos o conteúdo da variável string (sql) em um JOptionPane; • Linha 198 – Executa instrução SQL e atribui resultado a uma variável int; • Linha 202 – Se i for maior que zero, significa que a instrução SQL foi executada com corretamente, assim é exibida uma mensagem de sucesso; • Linha 206 – Caso ocorra alguma exceção, o sistema exibe o erro. 25 Passo 6 Crie um método void chamado atualiza_campos. E digite o seguinte código: public void atualiza_campos() { try { txtSigla.setText(“” + rs.getString(“sigla”)); txtNome.setText(“” + rs.getString(“Nome”));// txtDesc.setText(“” + rs.getString(“descricao”)); } catch (SQLException e) { System.out.println(e); } } Vamos à explicação do código • Linhas 328 a 330 – Atribui aos campos os valores contidos na variável ResultSet. Note que é passado como parâmetro do método getString o nome da coluna na qual desejamos obter o valor. Passo 7 Crie um método void chamado abrirTabela. E digite o seguinte código: String query1 = “Select * from curso”; try { Class.forName(“com.mysql.jdbc.Driver”); conn = DriverManager.getConnection(“jdbc:mysql://localhost/dbaula4”, “root”, “123”); stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); rs = stmt.executeQuery(query1);//executando o comando sql 26 Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts rs.first();//estamos movendo o cursor para o primeiro registro pesquisado atualiza_campos(); //conteudo da coluna sigla } catch (ClassNotFoundException e) { System.out.println(e); } catch (SQLException e) { System.out.println(e); } Vamos à explicação do código • Linha 352 – Atribui uma instrução SQL (seleção) a uma variável string; • Linha 344 – Esse comando registra a Classe do Driver JDBC; • Linha 345 – Cria um objeto de conexão passando como parâmetros o endereço, usuário e senha do banco de dados; • Linha 347 – Cria um objeto Statement e é por meio desse objeto que iremos executar operações no banco de dados; • Linha 349 – Executa comando Statement que recebe como parâmetro a instrução SQL e atribui o resultado a uma variável do tipo ResultSet; • Linha 350 – Executa comando que posiciona o resultado no primeiro registro retornado da seleção da tabela curso; • Linha 351 – Chama método atualiza_campos para exibir o resultado de nossa instrução SQL nos campos de nossa interface gráfica. 27 Passo 8 Crie um método para o botão “Deletar” e digite o seguinte código: String query1 = “DELETE FROM curso WHERE(sigla=”; String a = txtSigla.getText(); try { Class.forName(“com.mysql.jdbc.Driver”); conn = DriverManager.getConnection(“jdbc:mysql://localhost/dbaula4”, “root”, “123”); stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); String sql = query1 + “’” + txtSigla.getText() + “’)”; JOptionPane.showMessageDialog(null, sql); int i = 0; i = stmt.executeUpdate(sql);//executando o comando sql stmt.close(); if (i > 0) { JOptionPane.showMessageDialog(null, “Curso deletado com sucesso!”); // limpando campos txtSigla.setText(“”); txtNome.setText(“”); txtDesc.setText(“”); abreTabela(); } } catch (ClassNotFoundException e) { System.out.println(e); } catch (SQLException e) { System.out.println(e); } 28 Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts Vamos à explicação do código • Linha 210 - Atribui uma instrução SQL (seleção) a uma variável string; • Linha 211 – Atribui valor do campo Sigla para uma variável string; • Linha 213 – Registra a Classe do Driver JDBC; • Linha 214 – Cria um objeto de conexão passando como parâmetros o endereço, usuário e senha do banco de dados; • Linha 215 – Cria um objeto Statement e é por meio desse objeto que iremos executar operações no banco de dados; • Linha 217 – Implementa instrução SQL e atribui o resultado a uma variável string; • Linha 218 – Para fins didáticos, exibimos o conteúdo da variável string (sql) em um JOptionPane; • Linha 220 – Executa instrução SQL e atribui resultado a uma variável int. Passo 9 Crie um evento ActionPerformed para o botão “Atualizar” e digite o seguinte código: 29 String query1 = “UPDATE curso SET sigla=”; String a = txtSigla.getText(); try { Class.forName(“com.mysql.jdbc.Driver”); conn = DriverManager.getConnection(“jdbc:mysql://localhost/dbaula4”, “root”, “123”); stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); String sql = query1 + “’” + txtSigla.getText() + “’,” + “nome=’” + txtNome.getText() + “’,” + “descricao=’” + txtDesc.getText() + “’ where sigla=” + “’” + txtSigla.getText() + “’”; JOptionPane.showMessageDialog(null, sql); int i = 0; i = stmt.executeUpdate(sql);//executando o comando sql int y = 0; stmt.close(); y = stmt.CLOSE_CURRENT_RESULT; if (i > 0) { JOptionPane.showMessageDialog(null, “Curso alterado com sucesso!”); abreTabela(); } } catch (ClassNotFoundException e) { System.out.println(e); } catch (SQLException e) { System.out.println(e); } 30 Unidade: Eventos, Aplicativos com Banco de Dados e Organizaçãode Componentes de Layouts Vamos à explicação do código • 243 – Atribui uma instrução SQL (seleção) a uma variável string; • 244 – Atribui valor do campo Sigla para uma variável string; • 246 – Registra a Classe do Driver JDBC; • 247 – Cria um objeto de conexão passando como parâmetros o endereço, usuário e senha do banco de dados; • 248 – Cria um objeto Statement e é por meio desse objeto que iremos executar operações no banco de dados; • 250 – Implementa instrução SQL e atribui o resultado a uma variável string; • 254 – Para fins didáticos, exibimos o conteúdo da variável string (sql) em um JOptionPane; • 256 – Executa instrução SQL e atribui resultado a uma variável int. Passo 10 Crie um evento ActionPerformed para o botão “Limpar Campos” e digite o seguinte código: txtSigla.setText(“”); txtNome.setText(“”); txtDesc.setText(“”); Esse código é simples; aqui, estamos atribuindo uma string vazia para a propriedade setText dos campos textos de nossa aplicação. Navegação entre Registros Para navegar entre registros de nossa tabela Curso, usaremos os métodos first, last, next e previous de nosso objeto ResultSet. 31 Passo 10 Crie um evento ActionPerformed para o botão “Primeiro” e digite o seguinte código: try { rs.first(); atualiza_campos(); } catch (SQLException e) { System.out.println(e); } Vamos à explicação do código • 278 – Executa o método first do objeto rs; • 279 – Chama o método atualiza_campos; • 281 – Caso ocorra alguma exceção, o sistema exibe o erro. Passo 11 Crie um evento ActionPerformed para o botão “Anterior” e digite o seguinte código: try { rs.previous(); atualiza_campos(); } catch (SQLException e) { System.out.println(e); } 32 Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts Vamos à explicação do código • 311 – Executa o método previous do objeto rs; • 312 – Chama o método atualiza_campos; • 314 – Caso ocorra alguma exceção, o sistema exibe o erro. Passo 12 Crie um evento ActionPerformed para o botão “Próximo” e digite o seguinte código: try { rs.next(); atualiza_campos(); } catch (SQLException e) { System.out.println(e); } Vamos à explicação do código • 300 – Executa o método next do objeto rs. • 301 – Chama o método atualiza_campos. • 303 – Caso ocorra alguma exceção, o sistema exibe o erro. 33 Passo 13 Crie um evento ActionPerformed para o botão “Último” e digite o seguinte código: try { rs.last(); atualiza_campos(); } catch (SQLException e) { System.out.println(e); } Vamos à explicação do código • 289 – Executa o método last do objeto rs; • 290 – Chama o método atualiza_campos; • 292 – Caso ocorra alguma exceção, o sistema exibe o erro. Passo 14 Clique com o botão direito do mouse sobre uma área vazia do form e selecione Evento/ Window / windowOpened. 34 Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts No método criado digite o seguinte código. abreTabela(); Vamos Testar! Pressione Shift + F11 ou clique no menu Executar/ Limpar e Construir Projeto. Em seguida, pressione F6 ou clique no menu Executar/ Executar Projeto. 35 Digite os Campos e clique em Inserir. Agora, cadastre outros cursos, teste os botões Deletar e Atualizar. Com mais de um registro em nossa tabela, poderemos testar os botões de navegação entre os registros (Primeiro, Anterior, Próximo e Último). Nota Lembre-se sempre de que para nossa aplicação rodar com sucesso, o serviço de banco de dados deve estar rodando. 36 Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts Material Complementar Nesta Unidade, vimos as operações básicas ofertadas pelo JDBC. Podemos nos aprofundar mais no assunto no site da própria Oracle, na ferramenta Java, e ver os comandos de manipulação de dados. Quanto ao banco de dados, tanto o Oracle, Mysql, SQLServer, entre outros, todos usam o SQL padrão; portanto, qualquer site oficial destas ferramentas dará o suporte necessário para nossas aplicações. A seguir, os links das principais dicas das ferramentas: Explore http://www.oracle.com/br/products/database/overview/index.html; http://www.oracle.com/br/products/mysql/index.html; http://www.sqlserverdicas.com/. http://www.oracle.com/br/products/database/overview/index.html http://www.oracle.com/br/products/mysql/index.html http://www.sqlserverdicas.com/ 37 Referências Aplicação Java https://mega.co.nz/#!oBI2yYyI!hwAhxr70CXHHtyV0SgO_IkbwqIV1v164Y5xOFahXHxA Ferramenta para criar tabela MySQL https://mega.co.nz/#!oJ5XXJIK!xxG_wsDhVDh_VnQdbN6TYNkYLX3K5QZjPMWuBP7b4jY Servidor de Banco de dados https://mega.co.nz/#!8BY1kYSY!20GhxcXLB7pIvATvr299tuPXDTpTCcZvr8ohyCVHP9o https://mega.co.nz/#!oBI2yYyI!hwAhxr70CXHHtyV0SgO_IkbwqIV1v164Y5xOFahXHxA https://mega.co.nz/#!oJ5XXJIK!xxG_wsDhVDh_VnQdbN6TYNkYLX3K5QZjPMWuBP7b4jY https://mega.co.nz/#!8BY1kYSY!20GhxcXLB7pIvATvr299tuPXDTpTCcZvr8ohyCVHP9o 38 Unidade: Eventos, Aplicativos com Banco de Dados e Organização de Componentes de Layouts Anotações
Compartilhar