6
Java - Conexão ao Banco de Dados usando JDBC 1. Criar o modelo no DBDesigner, como mostrado a seguir. Salvar o script de criação da tabela. 2. Criar o esquema e as tabelas no MySQL (Pode usar o MySQL Query Browser) 3. Criar um projeto Java simples, com o nome Empresa, no NetBeans 4. Adicionar o driver de conexão MySQL: a. Descompactar o arquivo com o driver em algum diretório (Caso ainda não o tenha feito) b. Clicar com o botão direito sobre o diretório biblioteca e adicionar jar c. Localizar o arquivo contendo o driver e adicioná-lo 5. Criar três pacotes para o Projeto Empresa: modelo, persistencia e teste 6. No pacote teste, criar a classe TestaConexao: package teste; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class TestaConexao { public static void main (String args[]) throws SQLException{ Connection conexao = null; String url = "jdbc:mysql://”servidor”:3306/empresa"; String usuario = "root"; String senha = ""; try{ Class.forName("org.gjt.mm.mysql.Driver"); conexao = DriverManager.getConnection(url, usuario, senha); System.out.println("Conexão efetuada com sucesso!!!"); }catch(ClassNotFoundException cnfe){ System.out.println("Erro ao carregar o driver"); cnfe.printStackTrace(); } } } 7. Simular e testar erros na classe anterior 8. Criar uma classe no pacote persistência que contenha o método estático: getConexao(): package persistencia; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException;

Lista de Exercicios 13

Embed Size (px)

Citation preview

Page 1: Lista de Exercicios 13

Java - Conexão ao Banco de Dados usando JDBC

1. Criar o modelo no DBDesigner, como mostrado a seguir. Salvar o script de criação da tabela.

2. Criar o esquema e as tabelas no MySQL (Pode usar o MySQL Query Browser) 3. Criar um projeto Java simples, com o nome Empresa, no NetBeans 4. Adicionar o driver de conexão MySQL:

a. Descompactar o arquivo com o driver em algum diretório (Caso ainda não o tenha feito) b. Clicar com o botão direito sobre o diretório biblioteca e adicionar jar c. Localizar o arquivo contendo o driver e adicioná-lo

5. Criar três pacotes para o Projeto Empresa: modelo, persistencia e teste 6. No pacote teste, criar a classe TestaConexao:

package teste; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class TestaConexao { public static void main (String args[]) throws SQLException{ Connection conexao = null; String url = "jdbc:mysql://”servidor”:3306/empresa"; String usuario = "root"; String senha = ""; try{ Class.forName("org.gjt.mm.mysql.Driver"); conexao = DriverManager.getConnection(url, usuario, senha); System.out.println("Conexão efetuada com sucesso!!!"); }catch(ClassNotFoundException cnfe){ System.out.println("Erro ao carregar o driver"); cnfe.printStackTrace(); } } } 7. Simular e testar erros na classe anterior 8. Criar uma classe no pacote persistência que contenha o método estático: getConexao():

package persistencia; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException;

Page 2: Lista de Exercicios 13

import java.sql.Statement; public class GerenteConexao { //metodo estático gerador de conexões public static Connection getConexao(){ Connection conexao = null; String url = "jdbc:mysql://localhost:3306/empresa"; String usuario = "root"; String senha = "root"; try{ Class.forName("org.gjt.mm.mysql.Driver"); conexao = DriverManager.getConnection(url, usuario, senha); System.out.println("Conexão efetuada com sucesso!!!"); }catch(ClassNotFoundException cnfe){ System.out.println("Erro ao carregar o driver"); cnfe.printStackTrace(); } catch(SQLException sqle){ System.out.println("Não foi possível conectar com o BD"); sqle.printStackTrace(); } return conexao; } }

9. Testar a classe 10. Criar uma classe TestaEmpregado contendo o método main() para testar a conexão com o banco de

dados:

package teste; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import persistencia.GerenteConexao; public class TestaEmpregado { public static void main(String a[]){ Connection con = GerenteConexao.getConexao(); PreparedStatement pst = null; try{ String sql = "INSERT INTO EMPREGADO(CODIGO, NOME, IDADE) VALUES(1,'Maria',25)"; pst = con.prepareStatement(sql); pst.executeUpdate(); System.out.println("Dados inseridos com sucesso!!!"); }catch(SQLException sqle){ System.out.println("Não foi possível inserir os dados!!"); } } 11. Alterar a classe:

String sql = "INSERT INTO EMPREGADO(CODIGO, NOME, IDADE) VALUES(?,?,?)";

Page 3: Lista de Exercicios 13

pst = con.prepareStatement(sql); pst.setInt(1,2); pst.setString(2,"José"); pst.setInt(3,28); pst.executeUpdate();

12. Criar o classe EmpregadoDAO e o método grava:

import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; public class EmpregadoDAO { public static int grava(int codigo, String nome, int idade) { Connection con = GerenteConexao.getConexao(); PreparedStatement pst = null; int ret = 0; try { String sql = "INSERT INTO EMPREGADO(CODIGO, NOME, IDADE) VALUES(?,?,?)"; pst = con.prepareStatement(sql); pst.setInt(1, codigo); pst.setString(2, nome); pst.setInt(3, idade); ret = pst.executeUpdate(); System.out.println("Dados inseridos com sucesso!!!"); } catch (SQLException sqle) { System.out.println("Não foi possível inserir os dados!!"); } return ret; } }

13. Imagine criar um método grava para uma tabela com 100 campos! Então chegou a hora de criarmos uma

classe Java bean no pacote modelo, para que possamos instanciar objetos dessa classe.

package modelo; public class Empregado { private int codigo; private String nome; private int idade; public int getCodigo() { return codigo; } public void setCodigo(int codigo) { this.codigo = codigo; } public String getNome() { return nome; } public void setNome(String nome) {

Page 4: Lista de Exercicios 13

this.nome = nome; } public int getIdade() { return idade; } public void setIdade(int idade) { this.idade = idade; } }

14. Agora vamos atualizar o nosso método grava, passando como parâmetro um objeto e não mais cada um dos campos:

public static int grava(Empregado empregado) { Connection con = GerenteConexao.getConexao(); PreparedStatement pst = null; int ret = 0; try { String sql = "INSERT INTO EMPREGADO(CODIGO, NOME, IDADE) VALUES(?,?,?)"; pst = con.prepareStatement(sql); pst.setInt(1, empregado.getCodigo()); pst.setString(2, empregado.getNome()); pst.setInt(3, empregado.getIdade()); ret = pst.executeUpdate(); System.out.println("Dados inseridos com sucesso!!!"); } catch (SQLException sqle) { System.out.println("Não foi possível inserir os dados!!"); } return ret; }

15. Vamos testar o nosso método grava, para isso vamos criar uma classe de teste, chamada TestaEmpregadoDAO:

TestaEmpregadoDAO:

public class TestaEmpregadoDAO { public static void main(String args[]){ Empregado empregado = new Empregado(); empregado.setCodigo(3); empregado.setNome("Luiz"); empregado.setIdade(45); EmpregadoDAO.grava(empregado); } }

16. Agora vamos criar o método altera: public static int altera(Empregado empregado) { Connection con = GerenteConexao.getConexao(); PreparedStatement pst = null; int ret = 0; try { String sql = "UPDATE EMPREGADO SET NOME = ?, IDADE = ? WHERE CODIGO = ?"; pst = con.prepareStatement(sql);

Page 5: Lista de Exercicios 13

pst.setString(1, empregado.getNome()); pst.setInt(2, empregado.getIdade()); pst.setInt(3, empregado.getCodigo()); ret = pst.executeUpdate(); System.out.println("Dados atualizados com sucesso!!!"); } catch (SQLException sqle) { System.out.println("Não foi possível atualizar os dados!!"); sqle.printStackTrace(); } return ret; }

17. Vamos criar o método exclui: public static int exclui(int codigo) { Connection con = GerenteConexao.getConexao(); PreparedStatement pst = null; int ret = 0; try { String sql = "DELETE FROM EMPREGADO WHERE CODIGO = ?"; pst = con.prepareStatement(sql); pst.setInt(1, codigo); ret = pst.executeUpdate(); System.out.println("Dados excluído com sucesso!!!"); } catch (SQLException sqle) { System.out.println("Não foi possível excluir os dados!!"); sqle.printStackTrace(); } return ret; }

18. Criar um método para montar o objeto: public static Empregado le(int codigo) { Connection con = GerenteConexao.getConexao(); PreparedStatement pst = null; ResultSet rs = null; Empregado empregado = null; try { String sql = "SELECT * FROM EMPREGADO WHERE CODIGO = ?"; pst = con.prepareStatement(sql); pst.setInt(1, codigo); rs = pst.executeQuery(); if (rs.next()){ empregado = new Empregado(); empregado.setCodigo(rs.getInt("codigo")); empregado.setNome(rs.getString("nome")); empregado.setIdade(rs.getInt("idade")); } System.out.println("Dados excluído com sucesso!!!"); } catch (SQLException sqle) { System.out.println("Não foi possível excluir os dados!!"); sqle.printStackTrace(); } return empregado; }

19. Para testar o método le(), vamos criar o método toString na classe Empregado, após o método setIdade(); public String toString(){

Page 6: Lista de Exercicios 13

return "código = "+getCodigo()+ "\nNome = "+getNome()+ "\nIdade = "+getIdade(); }

20. Vamos criar outro método para ler todos os empregados do banco de dados: public static List<Empregado> leTodos() { List <Empregado> empregados = new ArrayList(); Connection con = GerenteConexao.getConexao(); Statement st = null; ResultSet rs = null; Empregado empregado = null; try { st = con.createStatement(); rs = st.executeQuery("SELECT * FROM EMPREGADO;"); while (rs.next()){ empregado = new Empregado(); empregado.setCodigo(rs.getInt("codigo")); empregado.setNome(rs.getString("nome")); empregado.setIdade(rs.getInt("idade")); empregados.add(empregado); } System.out.println("Dados lidos com sucesso!!!"); } catch (SQLException sqle) { System.out.println("Não foi possível ler os dados!!"); sqle.printStackTrace(); } return empregados; }