Exercícios de fixação: Listas Exercício 1 : Inlcuindo o driver ao seu projeto 1. No Eclipse, vamos criar um novo projeto chamado CursoJavaJDBC. 2. Copie o driver do MySQL para o seu projeto. a. localize o driver do MySQL mysql-connector-java-5.1.38-bin na pasta C:\JavaAvançado e copie-o (Ctrl+C); b. vá para sua pasta do seu workspace: C:\Users\<usuário>\workspace; c. crie uma pasta chamada lib e cole o driver dentro desta pasta. 3. Adicione o driver ao seu projeto: a. clique como botão direito sobre o seu projeto. b. vá até Build Path -> Add External Archives c. selecione o driver que está na pasta lib do seu workspace e clique em OK. Exercício 2 : Implementando o ConnectionFactory e testando a conexão. 1. Vamos criar a classe que fabrica conexões: a. Crie uma classe chamada ConnectionFactory no pacote curso.java.jdbc.factory. b. use o código abaixo para implementar a sua classe. public class ConnectionFactory { //referencia a própria classe private static ConnectionFactory instance = new ConnectionFactory(); public static final String URL = "jdbc:mysql://localhost/db01"; public static final String USER = "YOUR_DATABASE_USERNAME"; public static final String PASSWORD = " YOUR_DATABASE_PASSWORD"; private Connection createconnection() { Connection connection = null;
try { connection = DriverManager.getConnection(URL, USER, PASSWORD); catch (SQLException e) { System.out.println("ERROR: Unable to Connect to Database."); return connection; public static Connection getconnection() { return instance.createconnection(); 2. Vamos criar a classe de teste: a. Crie uma classe chamada TestaConexao no pacote curso.java.jdbc.teste. Todas as nossas classes de teste deverão ficar nesse pacote. b. Crie um método main dentro da classe. Use o atalho do Eclipse para ajudar. c. Dentro do main, fabrique uma conexão usando a ConnectionFactory que criamos. Vamos apenas testar a abertura da conexão e depois fechá-la com o método close(): Connection connection = new ConnectionFactory().getConnection(); System.out.println("Conexão aberta!"); connection.close(); d. Trate os erros com throws. ( Use: Ctrl + 1 e escolha "add throws declaration"). e. Rode a sua classe TestaConexao pelo Eclipse. Exercício 3 : Crie uma classe Contato que deve conter como atributos os campos da tabela contato e os métodos get e set para acessar esses atributos. Crie uma classe Contato que deve conter
como atributos os campos da tabela contato e os métodos get e set para acessar esses atributos. Exercício 4 : Criando o DAO e testando: 1. Implemente a seguinte interface no pacote curso.java.jdbc.dao. public interface ContatoDAO { public void inserir(contato c) throws SQLException; public void alterar(contato c) throws SQLException; public void remover(contato c) throws SQLException; public List<Contato> buscartodos() throws SQLException; public Contato buscarporid (Long id) throws SQLException; 2. Crie uma classe ContatoDAOImpl no pacote curso.java.jdbc.dao que implementa os métodos de ContatoDAO e que deve conter uma variável do tipo Connection e uma do tipo PreparedStatement. Além disso, deve implementar os métodos inserir, alterar, remover, buscartodos e buscarporid. public class ContatoDAOImpl implements ContatoDAO { private Connection conn; private PreparedStatement pstate; public void inserir(contato c) throws SQLException { try { conn = ConnectionFactory.getConnection(); /// cria um preparedstatement String sql = "insert into contatos" + " (nome,email,endereco,datanascimento)" + " values (?,?,?,?)"; PreparedStatement stmt = conn.preparestatement(sql); // preenche os valores stmt.setstring(1, c.getnome()); stmt.setstring(2, c.getemail()); stmt.setstring(3, c.getendereco()); stmt.setdate(4, new java.sql.date(c.getdatanascimento().gettimeinmillis()));
// executa stmt.execute(); stmt.close(); System.out.println("Gravado!"); catch(sqlexception e) { System.out.println(e); finally { conn.close(); public void alterar(contato c) throws SQLException { // TODO Auto-generated method stub public void remover(contato c) throws SQLException { // TODO Auto-generated method stub public List<Contato> buscartodos() throws SQLException { // TODO Auto-generated method stub return null; public Contato buscarporid(long id) throws SQLException { Contato c = new Contato(); try { conn = ConnectionFactory.getConnection(); /// cria um preparedstatement String sql = "select * from contatos where id =?"; PreparedStatement stmt = conn.preparestatement(sql); // preenche os valores stmt.setlong(1, id); // executa ResultSet rs = stmt.executequery();
rs.next(); c.setid(rs.getlong(1)); c.setnome(rs.getstring(2)); c.setemail(rs.getstring(3)); c.setendereco(rs.getstring(4)); Calendar cal = Calendar.getInstance(); cal.settime(rs.getdate(5)); c.setdatanascimento(cal); rs.close(); stmt.close(); System.out.println("Gravado!"); catch(sqlexception e) { System.out.println(e); finally { conn.close(); return c; 3. Crie uma classe ContatoDAOFactory no pacote curso.java.jdbc.factory que fabrica o DAO. public class ContatoDAOFactory { //Referencia a propria classe private static ContatoDAOFactory instance = new ContatoDAOFactory(); private ContatoDAO createcontatodao() { return new ContatoDAOImpl(); public static ContatoDAO getcontatodao() { return instance.createcontatodao();
Exercício 5 : Crie uma classe de Teste para utilizar o DAO. Lembre-se que esta classe deve estar no pacote de testes. public class TesteConexao { public static void main(string[] args) throws SQLException { ContatoDAO dao = ContatoDAOFactory.getContatoDAO(); Contato c = new Contato(); c.setnome("steve Wozniak"); c.setemail("steve@woz.org"); c.setendereco("sanjose, California"); Calendar cal = Calendar.getInstance(); cal.set(1963, Calendar.DECEMBER, 20); c.setdatanascimento(cal); dao.inserir(c); c = dao.buscarporid(new Long(1)); System.out.println(c.getNome());