dúvida: método pesquisa (mysql)

4 respostas
marcusluiz83

Boa noite a todos!

Pessoal, estou estudando a apostila da Caelum FJ-21, e emperrei em um exercício opcional, que manda criar um método de pesquisa que recebe um id (int) e retorna um objeto do tipo contato.

Contato

private Long id; private String nome; private String email; private String endereco;

Alguém pode me dar uma luz? Um abraço a todos.

4 Respostas

H

Um exemplo simples.

public Contato selectById(int id) {
		
		Connection conn = null;
		Statement st = null;
		ResultSet rs = null;
		Contato contato = null;
		
		try{
			conn = getConnection();
			st = conn.createStatement();
			rs = st.executeQuery("select * from contato where id = "+id);
			
			if (rs.next()){
				contato = new Contato();
				contato.setId(rs.getInt("id"));
				contato.setNome(rs.getString("nome"));
				contato.setEmail(rs.getString("email"));
				contato.setEndereco(rs.getString("endereco"));				
			}
			
		} catch (SQLException e) {
			System.out.println("Ocorreu um erro na consulta!!!");
			e.printStackTrace();			
		}
		finally{
			try {
				conn.close();
				st.close();
			} catch (SQLException e) {
                                System.out.println("Ocorreu um erro ao fechar a conexão!!!");
				e.printStackTrace();
			}
		}
		
		return contato;
	}
	
        // Alterar os dados do getConnection() de acordo com a tua implementação
	public static Connection getConnection() {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			return DriverManager.getConnection("jdbc:mysql://" + "127.0.0.1" + ":" + 3306 + "/"
												+ "NomeDoBanco" + "?" + "user=" + "NomeUsuario" 
												+ "&" + "password="	+ "SenhaUsuario");
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
nel
henriquejhc:
Um exemplo simples.
public Contato selectById(int id) {
		
		Connection conn = null;
		Statement st = null;
		ResultSet rs = null;
		Contato contato = null;
		
		try{
			conn = getConnection();
			st = conn.createStatement();
			rs = st.executeQuery("select * from contato where id = "+id);
			
			if (rs.next()){
				contato = new Contato();
				contato.setId(rs.getInt("id"));
				contato.setNome(rs.getString("nome"));
				contato.setEmail(rs.getString("email"));
				contato.setEndereco(rs.getString("endereco"));				
			}
			
		} catch (SQLException e) {
			System.out.println("Ocorreu um erro na consulta!!!");
			e.printStackTrace();			
		}
		finally{
			try {
				conn.close();
				st.close();
			} catch (SQLException e) {
                                System.out.println("Ocorreu um erro ao fechar a conexão!!!");
				e.printStackTrace();
			}
		}
		
		return contato;
	}
	
        // Alterar os dados do getConnection() de acordo com a tua implementação
	public static Connection getConnection() {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			return DriverManager.getConnection("jdbc:mysql://" + "127.0.0.1" + ":" + 3306 + "/"
												+ "NomeDoBanco" + "?" + "user=" + "NomeUsuario" 
												+ "&" + "password="	+ "SenhaUsuario");
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

Bom dia. Eu apenas diria para substituir o Statement por PreparedStatement bem como esta linha:

conn.close();
st.close();

Como está em um finally, significa que estas linhas serão executadas mesmo que exista um return, sendo assim, eu diria para fazer uma verificação para que não venha a ocorrer um NullPointerExcpetion.

if(conn != null) {
   conn.close();
}
if(st != null) {
  st.close();
}
lina

Oi,

Você deverá criar um método não void. Por que? Métodos void não tem retorno.

Sendo assim, um método void seria:

public void <NomeDoMetodo>() {} // Sem retorno

Como você deverá retornar um objeto do tipo Contato, o correto seria:

public Contato <NomeDoMetodo>() {}

Quando falamos que um método recebe um inteiro ou qualquer outro tipo de variável, significa uma passagem de parâmetro.

Sendo assim, seu método deverá ficar:

public Contato <NomeDoMetodo> (int an_id) {}

Obs: Esse parâmetro (int an_id), pode ser chamado de assinatura. Sendo assim, se alguem perguntar: Qual a assinatura do método?! Você já saberá que a assinatura é do tipo inteira.

Tchauzin!

marcusluiz83

Desculpem a demora, pessoal. Bom, vocês perceberam que eu sou iniciante, gostaria de agradecer a ajuda de todos. Ficou bem claro pra mim. Muito obrigado pela ajuda. Um abraço a todos.

Criado 1 de fevereiro de 2010
Ultima resposta 2 de fev. de 2010
Respostas 4
Participantes 4