Acessar dados do banco de dados

4 respostas
shenn

Estou fazendo um programa pra cadastrar clientes, consegui salvar os clientes junto com suas informações (CPF, RG, ENDEREÇO…) no banco postgresql, mas estou com problemas na hora de fazer uma busca, o usuario vai digitar o nome, e vai fazer uma busca no banco pra achar aquele nome e suas informações, fiz pelo modelo dao (o modelo que eu fiz esta certo) mas eu não sei como chamar aqueles dados em uma jsp, para depois mostrar na tela (é uma aplicação pra web)…

alguem sabe como fazer isso?

(OBS: se eu postei no lugar errado desculpa)

4 Respostas

drsmachado

Está no lugar correto, embora possa ser uma dúvida referente à desenvolvimento web.
Bem, se você fez seguindo o pattern DAO, deve ter um método, dentro da classe DAO, que faça o select.
Este select pode receber parâmetros (nome, id, etc). Sendo assim

public class MinhaDAO{
 public Cliente meuMetodo(String nome){
  String sql = "SELECT * FROM tabela WHERE nome LIKE '%?%';
  PreparedStatement ps = con.prepareStatement(sql);
  ps.setString(1, nome);
  ps.execute();
  ResultSet rs = ps.getResultSet();
  Cliente cli = new Cliente();
  while(rs.next()){
   cli.nome = rs.getString("nome");
   cli.id = rs.getInt("id");
   //assim por diante
  }
  return cli;
  
}
}

Se está usando jsp, acho que esteja chamando este método de uma servlet

//aqui codigo
 MinhaDAO minha = new MinhaDAO();
 //chama a inicialização, criação da conexão
 String nome = request.getParameter("nome");
  Cliente cli =  minha.meuMetod(nome);
  request.setAttribute("cliente", cli);
  response.sendRedirect("minhajsp.jsp");

Na jsp, você pode usar EL, JSTL ou, menos recomendado, mais feio e menos elegante, scriptlet…

shenn

oq eu coloco dentro desse like ‘%?%’

Aleksandro

No exemplo passado pelo drsmachado o like é um coringa no banco de dados , no exemplo a busca seria por nome portanto o like efetuará uma busca tal como select nome from tabela where nome like ‘%alek%’ neste caso o retorno será todos os nomes que contenham as letras alek contida em linhas da tabela nome…entendeu … para sanar suas dúvidas aconselho sempre efetuar um teste no próprio banco de dados …no seu caso o postgres tem o pgadmin que é muito bom …boa sorte …

Aleksandro

shenn
Esta dando erro, olha como esta o meu codigo (a parte do dao)
public List <Cadastro> retrieve() throws SQLException {
		String comando = "";
		try {
			Statement stmt = conexao.createStatement();
			comando = "select * from cadastro WHERE nome LIKE '%nome%' ";
			ResultSet rs = stmt.executeQuery(comando);
			List <Cadastro> listaDeCadastros = new ArrayList<Cadastro>();// lista de cadastros 
			while (rs.next()) {
					Cadastro cadastro = new Cadastro ();
					cadastro.setNome (rs.getString(1));
					cadastro.setApelido (rs.getString(2));
					cadastro.setEmail (rs.getString(3));
					cadastro.setCpf(rs.getString(4));
					cadastro.setNasc(rs.getString (5));
					cadastro.setTel(rs.getString(6));
									
					listaDeCadastros.add (cadastro);
					System.out.println("Cadastro 1: " + listaDeCadastros);
			}

			stmt.close();
			conexao.close();
			return listaDeCadastros;
			
		} catch (Exception e) {
			System.out.println("Erro no Cadastro.List "+ e);
			return null;
		}
}
ai vem na servlet
try {
			CadastroDAO cadastro = new CadastroDAO ();
			String nome = request.getParameter("nome");
			Cadastro cad = Cadastro (nome);
			request.setAttribute("cadastro", cad);
			response.sendRedirect("RegistroSucesso.jsp");
			System.out.println ("Erro1");
		} catch (SQLException e) {
			System.out.println ("Erro2" + e);
			response.sendRedirect("Erro.jsp");
			e.printStackTrace();
		}

não sei se vale a pena citar, que eu fiquei com uma duvida, quando o usuario digita o nome do cliente o programa armazena a informação do nome numa variavel que se chama "dado" (sem aspas)..

outra duvida, como eu chamo esses dados na jsp? depois de tudo

Criado 4 de junho de 2011
Ultima resposta 4 de jun. de 2011
Respostas 4
Participantes 3