Como Mostrar Todos Usando Crud Java Mysql( Não Consigo Recuperar todos dos dados do Banco)

9 respostas
java
Paulo_Henrique3
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;
	}
}

9 Respostas

Paulo_Henrique3
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);
		}

	}
}
clicnet

Como Mostrar Todos?
Explique melhor o seu problema!

Paulo_Henrique3

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.

L

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?

Paulo_Henrique3

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.

L

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.

Paulo_Henrique3

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.

Paulo_Henrique3

Deu certo não mas valeu a ajuda ai manos…

L

Isso é muito vago. Sem ver o código, impossível saber o que causou problema

Criado 19 de março de 2017
Ultima resposta 21 de mar. de 2017
Respostas 9
Participantes 3