Dúvidas sobre como exibir meus dados contidos no BD

Boa tarde galera,

Sou principiante em java e estou desenvolvendo um programa que trabalha da seguinte forma:

  • Uma camada para visão (Meus formulários);
  • Uma camada para controle (Aonde estão ficando minhas DAO contendo a conexão e sql para o banco).
  • Uma camada de modelo (Aonde estão ficando minhas entidades cliente… set, get).

Minha dúvida é a seguinte, estou conseguindo salvar minhas informações tranquilamente, mandando da camada “visão” para a “controle”, porem, não sei como buscar essas informações e retornar para meu formulário, gostaria se possivel que vocês pudessem dar um exemplo com base no exemplo abaixo.

// Camada visão mandando para controle 

      if(tfNome.getText().equals("") || tfendereco.getText().equals("")) {
            JOptionPane.showMessageDialog(null, "O campo 'Nome' e o campo 'Endereço' deverão ser preenchidos obrigatoriamente!");
        }
        else {
            DadosIgreja igreja = new DadosIgreja();
            igreja.setNome(tfNome.getText());
            igreja.setEndereco(tfendereco.getText());
            try {
                CadastrarDadosIgrejaDAO igre = new CadastrarDadosIgrejaDAO();
                igre.salvar(igreja);
            } catch (SQLException ex) {
                Logger.getLogger(CadastrarUsuario.class.getName()).log(Level.SEVERE, null, ex);
            }
        }


// Camada controle que salva no banco

 public void salvar(DadosIgreja igreja) {
      String sql = "insert into Igreja (id, nome, endereco) values (?,?,?);
                        
            try (PreparedStatement stmt = connection.prepareStatement(sql)){
                stmt.setInt(1, igreja.getId());
                stmt.setString(2,igreja.getNome());
                stmt.setString(3,igreja.getEndereco());
                stmt.execute();
               // stmt.close(); //e fecha a conexão ao bd
                JOptionPane.showMessageDialog(null,"Cadastro realizado com sucesso!!!");
                connection.close();
            }
             catch(SQLException ex) {
                JOptionPane.showMessageDialog(null,"Não foi possível adicionar os dados no banco\n" + ex);
           }          

Gostaria de saber como buscar esses dados do meu banco após salva-lo. Ouvi dizer para usar uma LIST, porem não sei na prática como fazer isso e também em que camada a utilizaria. Desde já agradeço a contribuição de todos.

Boa tarde,

Você teria que que ter no minimo mais 2 metodos além do salvar.

  • Método pesquisar (ou como preferir chamar), onde ele buscará todos os dados da tabela em questão, poderá receber parametros para a pesquisa ou não, vai executar nada mais do que um select.

  • Método get (ou como preferir chamar), irá receber a PK do objeto que deseja buscar no banco.

  • Esse outro método não tem haver com o que você perguntou, mas poderia criar também um remover, que recebe a pk do objeto que deseja deletar.

  • E também poderia criar o método de atualizar, recebe o objeto inteiro e atualiza todos os dados dele, menos a PK.

Assim você teria os métodos básicos de 1 CRUD.

[code]public Igreja pesquisar(String pesquisa){
String sql = “select * from suatabela where nomedocampo=?”;

PreparedStatement stmt = con.preparedStatement(sql);

stmt.setString(1, pesquisa);

Igreja igreja = new Igreja();

ResultSet rs = stmt.executeQuery();

while(rs.next){
igreja.metodoSet(rs.getString(“nomedocampo”);
.
.
.
}

return Igreja;
}[/code]

Poderia fazer do mesmo jeito usando uma ArrayList.
Espero ter ajudado.

Através do exemplo do Enadrov vc tbm pode fazer variações dos seus métodos de busca, alterado apenas seu comando sql, como:

select * from suatabela where nomedocampo LIKE ‘A%’
select id, nome from suatabela where id > 10

Abs!

bom respondendo essa pergunta like a boss
veja o video!

Boa tarde galera, então, primeiro gostaria de agradecer a todos que me responderam até o momento, as explicações tem sido boas e tem me ajudado a compreender mais e
mais, porem, ainda estou com dúvidas sobre o seguinte, estou criando na minha classe DAO os metodos “Pesquisar” que pesquisará os dados no banco e me retornará e
o metodo “MostrarDados” q eu kero q exiba o dado contido no BD, fiz conforme o Jeffev e também o Enadrov me falaram, porem,
eu ainda não consigo entender como vou exibir essas informações contidas nesse metodo “MostrarDados” na minha camada de visao (form), eu keria um exemplo exatamente sobre isso, q é aonde eu tenho tido uma maior dificuldade, tipo, como q eu faço para preencher meu tfNome e tfEndereco conforme o exemplo passado anteriormente?

Tenho me confundido um pouco acho q ate por causa dessa questao das camadas, antigamente, eu conseguia pegar as informações atraves de um resultset pela propria
camada de visao, mas me falaram q nessa camada n devo buscar nada no banco, então tenho ficado meio confuso quanto a isso, agradeço desde já por qualquer auxilio.
Abraço a todos.

Vc esta usando JSP? Se sim, vc pode fazer de varias formas, um delas é sua DAO vc criar uma lista do tipo do retorno do seu método, cries os get e set…no get da sua lista passe o método que retorna os dados do DB, aí é só chamar a lista na sua JSP.

//Camada VIEW
//neste exemplo é necessário importar as libs do JSTL

<jsp:useBean id="dao" class="br.com.teste.daoQualquer"/>
	<div>
	<table>
		 <tr>
		 	<td><b>Nome</b></td><td><b>Email</b></td>
		 </tr>
		<c:forEach var="contato" items="${dao.listaContatos}" >
		 <tr>
			<td>${contato.nome}</td>
			<td>
				<c:choose>
					<c:when test="${not empty contato.email}">
		        		<a href="mailto:${contato.email}">${contato.email}</a>
		      		</c:when>
					<c:otherwise>
						E-mail não informado
					</c:otherwise>
				</c:choose>
			</td>
		</c:forEach>
		 </tr>
	
	</table>
//Classe DAO
//....nome da classe e bla bla bla

private List<Contato> listaContatos;


public List<Contato> getListaContatos() {
		return listaContatos = listar(); // aqui vc chama o seu método que retorna dados do DB
}


//.... seus metodos.....

Espero tenha clareado um pouco as coisas.
Abs!

Apenas complementando, vc pode baixar as bibliotecas jstl-api e jstl-impl do http://search.maven.org/#search%7Cga%7C1%7C
aí é só colocar em WebContent/META-INF/lib e add no seu Build Path
e por ultimo importar na sua JSP atraves do <%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>

Boa tarde galera,

Gostaria de agradecer ao freakazoid, sua resposta me ajudou e realmente consegui exibir as informações contidas no BD na minha camada de visão agora, agradeço tbm a todos que se dispuseram pra estar ajudando.
Um abraço a todos!!!

Fico feliz em ter ajudado. Fica aqui mais uma dica para aprender mais sobre JSP http://www.caelum.com.br/apostila-java-web/, as apostilas da caelum são bem legais!

abs!

Estou usando exatamente essa apostila para meus estudos, rs, é realmente um material muito bom esse da Caelum, só q estou desenvolvendo um programa a principio pra Desktop e trabalhando com DAO, o qual aprendi lendo essa apostila.
Surgindo as dúvidas volto a postar aos amigos, abraços!!!