COMO CONECTAR PROGRAMAS EM LINGUAGEM JAVA A BASES DE DADOS
Henrique Fernandes da Silva
1 INTRODUÇÃO
Estarei tratando aqui,...
id INT(4) AUTO_INCREMENT NOT NULL,
descricao VARCHAR(255),
preco DECIMAL(6,2),
PRIMARY KEY(id)
);
2 DIAGRAMA DE CLASSE DO ...
Figura 2: Estrutura do projeto.
2.2 Código das classes do projeto
A seguir veremos a implementação do diagrama de classes ...
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public String getDescricao() {
return this.desc...
break;
case TXTFILE:
// TODO
break;
}
return dao;
}
}
InterfacePessoaDao interface responsável por definir, o que uma clas...
values(?, ?)";
Connection conexao;
PreparedStatement stm;
try {
conexao = DriverManager.getConnection(url, usuario,
senha)...
// Pode-se utilizar estes try para guardar erros em
arquivos de log.
} catch(Exception erro) {
System.out.println("Erro: n...
stm = conexao.prepareStatement(sql);
ResultSet rs = stm.executeQuery();
while(rs.next()) {
produtos.add(
new Produto(
rs.g...
produto1 = new Produto();
produto1.setId(1);
produto1.setDescricao("Pó de chulé");
produto1.setPreco(4003.32);
dao.atualiz...
Próximos SlideShares
Carregando em…5
×

Como conectar programas em linguagem java a bases de dados

132 visualizações

Publicada em

Estarei tratando aqui, como podemos utilizar a linguagem java, para acessar bancos de
dados. Os conceitos aqui discutidos, podem ser usados para criar aplicações, que acessem
diferentes base de dados, desde banco de dados relacionais, banco de dados orientados a
objetos ou até arquivos em textos plano. Utilizaremos os padrões de projeto Factory com
DAO(Data Access Object).

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
132
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
1
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Como conectar programas em linguagem java a bases de dados

  1. 1. COMO CONECTAR PROGRAMAS EM LINGUAGEM JAVA A BASES DE DADOS Henrique Fernandes da Silva 1 INTRODUÇÃO Estarei tratando aqui, como podemos utilizar a linguagem java, para acessar bancos de dados. Os conceitos aqui discutidos, podem ser usados para criar aplicações, que acessem diferentes base de dados, desde banco de dados relacionais, banco de dados orientados a objetos ou até arquivos em textos plano. Utilizaremos os padrões de projeto Factory com DAO(Data Access Object). Nos próximos passos utilizaremos o Mysql Server. 1.1 Criando um banco de dados no Mysql Server Os passos a seguir mostram como criar um banco de dados e uma tabela no Mysql Server. Abra o terminal e logue no Mysql server, digitando o comando abaixo, substituindo o [usuario] por seu nome de usuário mysql: mysql -p -u [usuario] Criando o Banco de dados no Mysql Server: CREATE DATABASE produtosdb; Selecionando o Banco de dados no Mysql Server: use produtosdb; Criando a tabela produto: CREATE TABLE produto (
  2. 2. id INT(4) AUTO_INCREMENT NOT NULL, descricao VARCHAR(255), preco DECIMAL(6,2), PRIMARY KEY(id) ); 2 DIAGRAMA DE CLASSE DO PROJETO O diagrama a seguir descreve os detalhes de como será feito o projeto usando a UML(Linguagem de Modelagem Unificada em inglês). Veja a figura a seguir: Figura 1: Diagrama de classes. 2.1 Estrutura do projeto Java
  3. 3. Figura 2: Estrutura do projeto. 2.2 Código das classes do projeto A seguir veremos a implementação do diagrama de classes da Figura 1. Classe ou entidade ou objeto de transferência Produto: package dto; public class Produto { private int id; private String descricao; private double preco; public Produto() { } public Produto(int id, String descricao, double preco) { this.id = id; this.descricao = descricao; this.preco = preco; } public void setId(int id) { this.id = id; } public int getId() { return this.id; }
  4. 4. public void setDescricao(String descricao) { this.descricao = descricao; } public String getDescricao() { return this.descricao; } public void setPreco(double preco) { this.preco = preco; } public double getPreco() { return this.preco; } @Override public String toString() { return "nId: " + this.getId() + "nDescricao: " + this.getDescricao() + "nPreco de venda: " + this.getPreco(); } } Enumeração Banco para definir os banco de dados suportados pelo projeto: package factory; public enum Banco { MYSQL, MONGODB, TXTFILE } FactoryPessoaDao responsável por criar o banco de dados: package factory; import dao.InterfacePessoaDao; import dao.MysqlDao; public class FactoryPessoaDao { // Metodo responsavel por criar o banco de dados. public static InterfacePessoaDao criarBanco(Banco banco) { InterfacePessoaDao dao = null; switch (banco) { case MYSQL: dao = new MysqlDao(); break; case MONGODB: // TODO
  5. 5. break; case TXTFILE: // TODO break; } return dao; } } InterfacePessoaDao interface responsável por definir, o que uma classe dao deve implementar: package dao; import java.util.ArrayList; // Importando a Classe Produto import dto.Produto; public interface InterfacePessoaDao { boolean inserir(Produto produto); boolean atualizar(Produto produto); boolean excluir(Produto produto); ArrayList<Produto> todosOsProdutos(); } MysqlDao implementação de classe de acesso a dados para banco Mysql: package dao; import java.util.ArrayList; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import dto.Produto; public class MysqlDao implements InterfacePessoaDao { String usuario = "seu usuario"; String senha = "sua senha"; String url = "jdbc:mysql://localhost/produtosdb"; @Override public boolean inserir(Produto produto) { // Se a operação teve sucesso. boolean isSucesso = false; String sql = "INSERT INTO produto(descricao, preco)
  6. 6. values(?, ?)"; Connection conexao; PreparedStatement stm; try { conexao = DriverManager.getConnection(url, usuario, senha); stm = conexao.prepareStatement(sql); stm.setString(1, produto.getDescricao()); stm.setDouble(2, produto.getPreco()); stm.executeUpdate(); isSucesso = true; stm.close(); conexao.close(); } catch(SQLException erro) { System.out.println("Erro SQL: n" + erro.getMessage()); // Pode-se utilizar estes try para guardar erros em arquivos de log. } catch(Exception erro) { System.out.println("Erro: n" + erro.getMessage()); // Pode-se utilizar estes try para guardar erros em arquivos de log. } return isSucesso; } @Override public boolean atualizar(Produto produto) { // Se a operação teve sucesso. boolean isSucesso = false; String sql = "UPDATE produto SET descricao=?, preco=? WHERE id=?"; Connection conexao; PreparedStatement stm; try { conexao = DriverManager.getConnection(url, usuario, senha); stm = conexao.prepareStatement(sql); stm.setString(1, produto.getDescricao()); stm.setDouble(2, produto.getPreco()); stm.setInt(3, produto.getId()); stm.executeUpdate(); isSucesso = true; stm.close(); conexao.close(); } catch(SQLException erro) { System.out.println("Erro SQL: n" + erro.getMessage());
  7. 7. // Pode-se utilizar estes try para guardar erros em arquivos de log. } catch(Exception erro) { System.out.println("Erro: n" + erro.getMessage()); // Pode-se utilizar estes try para guardar erros em arquivos de log. } return isSucesso; } @Override public boolean excluir(Produto produto) { // Se a operação teve sucesso. boolean isSucesso = false; String sql = "DELETE FROM produto WHERE id=?"; Connection conexao; PreparedStatement stm; try { conexao = DriverManager.getConnection(url, usuario, senha); stm = conexao.prepareStatement(sql); stm.setInt(1, produto.getId()); stm.executeUpdate(); isSucesso = true; stm.close(); conexao.close(); } catch(SQLException erro) { System.out.println("Erro SQL: n" + erro.getMessage()); // Pode-se utilizar estes try para guardar erros em arquivos de log. } catch(Exception erro) { System.out.println("Erro: n" + erro.getMessage()); // Pode-se utilizar estes try para guardar erros em arquivos de log. } return isSucesso; } @Override public ArrayList<Produto> todosOsProdutos() { ArrayList<Produto> produtos = new ArrayList<>(); String sql = "SELECT * FROM produto"; Connection conexao; PreparedStatement stm; try { conexao = DriverManager.getConnection(url, usuario, senha);
  8. 8. stm = conexao.prepareStatement(sql); ResultSet rs = stm.executeQuery(); while(rs.next()) { produtos.add( new Produto( rs.getInt(1), rs.getString(2), rs.getDouble(3)) ); } } catch(SQLException erro) { System.out.println("Erro SQL: n" + erro.getMessage()); // Pode-se utilizar estes try para guardar erros em arquivos de log. } catch(Exception erro) { System.out.println("Erro: n" + erro.getMessage()); // Pode-se utilizar estes try para guardar erros em arquivos de log. } return produtos; } } MainPointer utilizando os dao's e factory's. Esta classe possui um ponto principal de execução o método main(): package app; import dto.Produto; import factory.Banco; import factory.FactoryPessoaDao; import dao.InterfacePessoaDao; public class MainPointer { public static void main(String[] args) { // Criando acesso ao banco mysql. InterfacePessoaDao dao = FactoryPessoaDao.criarBanco(Banco.MYSQL); // Criando um produto 1 Produto produto1 = new Produto(); // produto1.setId(1); produto1.setDescricao("Pó de Pilim Pim Pim"); produto1.setPreco(400.32); // Inserindo os produto 1 dao.inserir(produto1); System.out.println("Inserido!n"); // Atualizando
  9. 9. produto1 = new Produto(); produto1.setId(1); produto1.setDescricao("Pó de chulé"); produto1.setPreco(4003.32); dao.atualizar(produto1); // Exluindo dao.atualizar(produto1); // Listando produtos System.out.println("Todos os Produtos na Base de Dados."); for (Produto p : dao.todosOsProdutos()) { System.out.println(p.toString()); } } } CONCLUSÃO Utilizando os padrões de projeto Factory com DAO(Data Access Object). Podemos criar aplicações que podem acessar muitos banco de dados. Trabalhar com interface é um ponte chave, pois, interfaces possibilitam que os tipos possam ser definidos em tempo de execução. Usando Factory podemos definir que apenas a Factory, seja responsável por instanciar o banco evitando assim, código macarrônico e com alto acoplamento.

×