package br.com.dao.pessoa;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.util.ArrayList;
import br.com.Persistencia.Conexao;
import br.com.util.*;
import br.com.modelo.pessoa.*;
public class DaoPessoa {
MSG msg = new MSG();
public int incluirPessoa(Pessoa p) {
int id = 0;
Conexao conexao = new Conexao();
Connection conn = null;
ResultSet rs = null;
Statement st = null;
PreparedStatement ps = null;
conn = conexao.abreConexaoBD();
String sql = "SELECT * FROM pessoa WHERE nome='" + p.getNome() + "'";
try {
st = conn.createStatement();
rs = st.executeQuery(sql);
if (!rs.next()) {
sql = "INSERT INTO pessoa (nome, cpf) VALUES (?, ?)";
ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
ps.setString(1, p.getNome());
ps.setString(2, p.getCpf());
ps.executeUpdate();
rs = ps.getGeneratedKeys();
if (rs.next()) {
id = rs.getInt(1);
}
msg.MsgUteis("Pessoa Incluida com sucesso id:" + id, "Sucesso");
} else {
msg.MsgUteis("Não foi possivel incluir a pessoa, Ja possui cadastro", "Erro!");
}
} catch (SQLException e) {
msg.MsgUteis(e.getMessage(), "Erro!");
}
return id;
}
public boolean alterar(Pessoa p) {
Boolean retorno = false;
Conexao conexao = new Conexao();
Connection conn = null;
PreparedStatement ps = null;
conn = conexao.abreConexaoBD();
String sql = "";
try {
sql = "UPDATE pessoa SET nome = ?, cpf = ? WHERE Pessoa_id = ?";
ps = conn.prepareStatement(sql);
ps.setString(1, p.getNome());
ps.setString(2, p.getCpf());
ps.setInt(3, p.getId());
ps.executeUpdate();
retorno = true;
} catch (SQLException e) {
msg.MsgUteis(e.getMessage(), "Erro!");
}
return retorno;
}
public void excluir(int id) {
Conexao conexao = new Conexao();
Connection conn = null;
PreparedStatement ps = null;
conn = conexao.abreConexaoBD();
String sql = "";
try {
sql = "DELETE FROM Pessoa WHERE Pessoa_id = ?";
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
ps.execute();
msg.MsgUteis("Pessoa excluida com sucesso", "Sucesso");
} catch (SQLException e) {
msg.MsgUteis(e.getMessage(), "Erro!");
}
}
public Pessoa consulta(String nome) {
Pessoa p = new Pessoa();
Conexao conexao = new Conexao();
Connection conn = null;
ResultSet rs = null;
Statement st = null;
conn = conexao.abreConexaoBD();
String sql = "";
if (nome == p.getNome()) {
sql = "SELECT * FROM pessoa WHERE nome = '" + nome + "'";
} else {
sql = "SELECT * FROM pessoa WHERE nome LIKE '" + nome + "%'";
}
try {
st = conn.createStatement();
rs = st.executeQuery(sql);
if (rs.next()) {
p.setId(rs.getInt(1));
p.setNome(rs.getString(2));
p.setCpf(rs.getString(3));
} else {
p = null;
}
} catch (SQLException e) {
msg.MsgEntrada(e.getMessage(), "Erro!");
}
return p;
}
public Pessoa consulta(int id) {
Pessoa p = new Pessoa();
Conexao conexao = new Conexao();
Connection conn = null;
ResultSet rs = null;
Statement st = null;
conn = conexao.abreConexaoBD();
String sql = "SELECT * FROM pessoa WHERE Pessoa_id = '" + id + "'";
try {
st = conn.createStatement();
rs = st.executeQuery(sql);
if (rs.next()) {
p.setId(rs.getInt(1));
p.setNome(rs.getString(2));
p.setCpf(rs.getString(3));
} else {
p = null;
}
} catch (SQLException e) {
msg.MsgUteis(e.getMessage(), "Erro!");
}
return p;
}
public ArrayList<Pessoa> BuscarTodos(){
ArrayList<Pessoa> pessoas = new ArrayList<Pessoa>();
Pessoa p;
Conexao conexao = new Conexao();
Connection conn = null;
ResultSet rs = null;
Statement st = null;
conn = conexao.abreConexaoBD();
String sql="SELECT * FROM pessoa ORDER BY Pessoa_id";
try{
st = conn.createStatement();
rs = st.executeQuery(sql);
while(rs.next()){
p = new Pessoa();
p.setId(rs.getInt("Pessoa_id"));
p.setNome(rs.getString("nome"));
p.setCpf(rs.getString("cpf"));
pessoas.add(p);
}
}catch(SQLException sqle){
pessoas = null;
}
return pessoas;
}
}
Como Mostrar Todos Usando Crud Java Mysql( Não Consigo Recuperar todos dos dados do Banco)
9 Respostas
package br.com.Visao;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.InputMismatchException;
import javax.swing.JOptionPane;
import br.com.Persistencia.*;
import br.com.dao.pessoa.*;
import br.com.dao.telefone.DaoTelefone;
import br.com.modelo.pessoa.*;
import br.com.modelo.telefone.Telefone;
import br.com.util.MSG;
public class Visualisando {
private static Telefone t;
public static void main(String[] args) {
Pessoa p;
t = null;
DaoPessoa dao = new DaoPessoa();
DaoTelefone daot = new DaoTelefone();
MSG msg = new MSG();
Conexao conexao = new Conexao();
Connection conn = null;
conn = conexao.abreConexaoBD();
int opc = 0;
String mensagem ="";
try {
do {
if (conn == null) {
JOptionPane.showMessageDialog(null, "Sem conexão");
} else {
ArrayList<Telefone> fones = new ArrayList<Telefone>();
JOptionPane.showMessageDialog(null, "Bem Vindo ao Sistema de Cadastro de Pessoas");
opc = Integer.parseInt(msg.MsgEntrada("Selecione uma opção:" + "\n1 - Verificar Conexão"
+ "\n2 - Incluir Contato e Incluir Telefone" + "\n3 - Alterar Contato ou Telefone"
+ "\n4 - Excluir Contato" + "\n5 - Consulta por Nome" + "\n6 - Consulta por Codigo"
+ "\n7 - Listar todas as Pessoas " + "\n8 - Sair", "Cliente Servidor"));
switch (opc) {
case 1:
if (conexao.abreConexaoBD() != null) {
JOptionPane.showMessageDialog(null, "Conexão Bem Sucessida");
} else {
JOptionPane.showMessageDialog(null, "Sem Conexão tente Novamente");
}
break;
case 2:
p = new Pessoa();
p.setNome(msg.MsgEntrada("Informe o nome do Usuário", "Cliente Servidor"));
p.setCpf(msg.MsgEntrada("Informe o CPF do Usuário ", "Cliente Servidor"));
String nomes = "Nome:" + p.getNome().substring(0, 1).toUpperCase()
+ p.getNome().substring(1, p.getNome().length()) + "\n" + "CPF:" + p.getCpf();
msg.MsgUteis(nomes, "Usuário Digitado");
int tel;
tel = JOptionPane.showConfirmDialog(null, "O usuário possui telefone ?", "Cliente Servidor",
JOptionPane.YES_NO_OPTION);
while (tel == JOptionPane.YES_NO_OPTION) {
t = new Telefone();
t.setFone(msg.MsgEntrada("Informe o numero para cadastro", "Cliente Servidor"));
fones.add(t);
tel = JOptionPane.showConfirmDialog(null, "O usuário possui outro telefone ?",
"Cliente Servidor", JOptionPane.YES_NO_OPTION);
}
p.setId(dao.incluirPessoa(p));
p.setfone(fones);
daot.incluirTelefone(p);
break;
case 3:
ArrayList<Pessoa> pessoas = new ArrayList<Pessoa>();
pessoas=dao.BuscarTodos();
String todos = "";
for (int i = 0; i < pessoas.size(); i++) {
todos += "Nome " + pessoas.get(i).getNome() + " CPF " + pessoas.get(i).getCpf() + " Id "
+ pessoas.get(i).getId() + "\n";
}
if (!todos.equals("")) {
msg.MsgUteis(todos, "Resultado");
} else {
msg.MsgUteis("Nada para exibir ", "Resultado");
System.exit(0);
}
p = dao.consulta(
msg.MsgEntrada("Informe o Nome do Usuário que Deseja Alterar", "Cliente Servidor"));
if (p != null) {
int nome, cpf;
if (p.getId() != 0) {
nomes = "Nome:" + p.getNome().substring(0, 1).toUpperCase()
+ p.getNome().substring(1, p.getNome().length()) + "\n" + "CPF:" + p.getCpf();
msg.MsgUteis(nomes, "Usuário do Nome Digitado");
}
nome = JOptionPane.showConfirmDialog(null, "Deseja Alterar o Nome do Usuário Visualisado ?",
"Cliente Servidor", JOptionPane.YES_NO_OPTION);
if (nome == JOptionPane.YES_NO_OPTION) {
p.setNome(msg.MsgEntrada("Informe um novo Nome", "Cliente Servidor"));
}
cpf = JOptionPane.showConfirmDialog(null, "Deseja Alterar o CPF Cadastrado ?",
"Cliente Servidor", JOptionPane.YES_NO_OPTION);
if (cpf == JOptionPane.YES_NO_OPTION) {
p.setCpf(msg.MsgEntrada("Informe o novo CPF para Atualização Somente Numeros",
"Cliente Servidor"));
}
}
if (dao.alterar(p) == true) {
msg.MsgUteis("Cadastro Atualizado com sucesso", "Cliente Servidor");
} else {
msg.MsgUteis(" Não Localizado no Banco de Dados!", "Cliente Servidor");
}
break;
case 4:
String codigo;
codigo = msg.MsgEntrada("Informe o Codigo da Pessoa para pesquisar", "Cliente Servidor");
p = new Pessoa();
dao.consulta(Integer.parseInt(codigo));
if (Integer.parseInt(codigo) != p.getId()) {
msg.MsgUteis("Usuário não encontrado", "Falha");
} else {
mensagem = "ID: " + p.getId() + "\nNome: " + p.getNome() + "\nCPF: " + p.getCpf();
if (p.getfone() != null) {
String telefones = "";
for (int i = 0; i < p.getfone().size(); i++) {
telefones += "\n" + p.getfone().get(i).getId();
}
mensagem += "\nTelefones:" + telefones;
}
msg.MsgUteis(mensagem, "Cliente Servidor");
daot.excluir(Integer.parseInt(codigo));
dao.excluir(Integer.parseInt(codigo));
}
break;
case 5:
p = dao.consulta(msg.MsgEntrada("Informe o nome da Pessoa para pesquisar", "Cliente Servidor"));
if (p == null) {
msg.MsgUteis("Pessoa não encontrada no Banco de Dados!", "Cliente Servidor");
} else {
mensagem = "ID: " + p.getId() + "\nNome: " + p.getNome() + "\nCPF: " + p.getCpf();
if (p.getfone() != null) {
String telefones = "";
for (int i = 0; i < p.getfone().size(); i++) {
telefones += "\n" + p.getfone().get(i).getId();
}
mensagem += "\nTelefones:" + telefones;
msg.MsgUteis(mensagem, "Cliente Servidor");
}
}
break;
case 6:
codigo = msg.MsgEntrada("Informe o Codigo da Pessoa para pesquisar", "Cliente Servidor");
p = new Pessoa();
if (dao.consulta(Integer.parseInt(codigo)) == null && Integer.parseInt(codigo) != p.getId()) {
msg.MsgUteis("Não encontrado", "Cliente Servidor");
} else {
mensagem = "ID: " + p.getId() + "\nNome: " + p.getNome() + "\nCPF: " + p.getCpf();
if (p.getfone() != null) {
String telefones = "";
for (int i = 0; i < p.getfone().size(); i++) {
telefones += "\n" + p.getfone().get(Integer.parseInt(codigo)).getId();
}
mensagem += "\nTelefones:" + telefones;
msg.MsgUteis(mensagem, "Cliente Servidor");
}
}
break;
case 7:
ArrayList<Pessoa> pessoas1 = new ArrayList<Pessoa>();
pessoas1 = dao.BuscarTodos();
if(pessoas1 != null){
mensagem="";
for(int i = 0; i < pessoas1.size(); i++){
mensagem += pessoas1.get(i).getId()+" "+pessoas1.get(i).getNome()+" "+pessoas1.get(i).getCpf()+"\n";
}
msg.MsgUteis(mensagem, "Resultado");
}else{
msg.MsgUteis("Nada para Exibir", "Resultado");
}
break;
case 8:
int saida = JOptionPane.showConfirmDialog(null, "Deseja realmente sair do Sistema ?",
"Cliente Servidor", JOptionPane.YES_NO_OPTION);
if (saida == JOptionPane.YES_NO_OPTION) {
msg.MsgUteis("Programa encerrado com sucesso até Breve", "Cliente Servidor");
System.exit(saida);
} else {
opc = 0;
}
break;
default:
opc = 0;
msg.MsgUteis("Opção invalida Tente Novamente", "Cliente Servidor!");
}
}
} while (opc != 8);
} catch (InputMismatchException ime) {
JOptionPane.showMessageDialog(null, "Tipo de dados invalido verifique e tente novamente.",
"Cliente Servidor", JOptionPane.ERROR_MESSAGE);
}
}
}
Como Mostrar Todos?
Explique melhor o seu problema!
Opa meu problema é o seguinte preciso neste programa fazer um crud,porem na hora de visualizar todos eles esta retornando o mesmo dado repetidas vezes.
Antes de prosseguir, gostaria de dizer que métodos e atributos, no java, devem ter nome iniciado com letra minúscula: ‘buscarTodos’, por exemplo.
O que acontece quando você chama o método BuscarTodos?
Algum erro?
Opa Bom dia valeu pela dica,meu problema é o seguinte quando chamo o método buscar todos e tenho 5 dados no banco por exemplo ele retorna o um mesmo dado 5 vezes repetido.
Veja o código acima, tirando as partes que não são relevantes para entender o que acontece, você precisa estar ciente do seguinte.
Embora seja quase um lugar comum entender a interface List (java.util) como uma “mochila” onde você vai colocando objetos diversos, isso não é verdade. Ela é mais uma geradora de bilhetes que identifica um objeto e lhe confere um ticket. Este ticket, basicamente, diz em que posição de memória aquele objeto está. Ou seja, faz referência a posição de memória do objeto.
Isso, na prática, significa dizer que, quando você tem
String x = "oi";
List<String> lista = new ArrayList<String>();
for(int i = 0; i < 5; i++){
x = "a" + i.
lista.add(x);
}
Quando o laço for acabar, o que estará dentro da lista? Não serão 5 referências distintas a 5 objetos diferentes (a0, a1, a2, a3 e a4). Todos estão referindo-se a uma única posição de memória, a que contém a última alteração para a String x, ou seja, teremos a4 em todas as posições, porquê? Para esclarecer, vamos ver o mesmo trecho, de forma diferente
List<String> lista = new ArrayList<String>();
for(int i = 0; i < 5; i++){
String x = "a" + i.
lista.add(x);
}
Agora sim, teremos 5 referências a 5 objetos distintos, pois cada iteração do laço for gerou uma nova String, uma nova referência (nem vou entrar no mérito de quantas Strings foram criadas aqui e no anterior, só no mérito de que neste exemplo, as referências foram adicionadas adequadamente à lista).
Entendeu?
No teu caso, você declarou Pessoa p fora do laço for. Basta remover esta declaração e alterar esta linha p = new Pessoa(); para isso Pessoa p = new Pessoa();, dentro do laço for e pronto.
Entendi se for só isso vai ser de boua,valeu assim que tiver um tempo aqui na empresa vou aplicar,ninguém conseguiu encontrar o erro,por isso recorri ao Forum.
Deu certo não mas valeu a ajuda ai manos…
Isso é muito vago. Sem ver o código, impossível saber o que causou problema