Dúvida com classe DAO[RESOLVIDO]

4 respostas
jeloy

Bom dia…

estou tendo problemas para chamar um metodo de uma classe DAO

public Cliente select(long id) {
		String sql = "SELECT * FROM CLIENTE WHERE ID=?;";
		
		try {
			PreparedStatement stmt = connection.prepareStatement(sql);
			ResultSet rs = stmt.executeQuery();
			Cliente cliente = new Cliente();
			if(rs.next()) {
				
				stmt.setLong(1, id);
				cliente.setId(rs.getLong("id"));
				cliente.setNome(rs.getString("nome"));
				cliente.setId_tipo(rs.getLong("id_tipo"));
				cliente.setCpf_cnpj(rs.getString("cpf_cnpj"));
				cliente.setRg_ie(rs.getString("rg_ie"));
				cliente.setEndereco(rs.getString("endereco"));
				cliente.setFone(rs.getString("fone"));
				cliente.setContato(rs.getString("contato"));
				
				
			}
			rs.close();
			stmt.close();
			return cliente;
		
		}catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}

entao eu tento rodar ele com um teste

public class Teste {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		long id = 11;
		ClienteDAO dao = new ClienteDAO();
		dao.select(id);
		
			

	}

	
	

}

quando rodo esse teste ele causa uma exception, dizendo que nao foi fornecido valor para o param 1 da classe DAO

onde será que estou errando "/

4 Respostas

P

Cara,

Na linha após o

PreparedStatement stmt = connection.prepareStatement(sql);

Você precisa atribuir o id que recebe como parâmetro para o statement:

stmt.setLong(1, id);
B
stmt.setLong(1, id);

antes do …

ResultSet rs = stmt.executeQuery();
G

Olá, você somente trocou as posições de uma linha de código que esta na linha 10, e tem que ser antes do IF:

public Cliente select(long id) {
		String sql = "SELECT * FROM CLIENTE WHERE ID=?;";
		
		try {
			PreparedStatement stmt = connection.prepareStatement(sql);
			ResultSet rs = stmt.executeQuery();
			Cliente cliente = new Cliente();
			if(rs.next()) {
				
				stmt.setLong(1, id);  //FIXME: Esta linha tem que ser antes do ResultSet rs = stmt.executeQuery(); que esta na linha 06
				cliente.setId(rs.getLong("id"));
				cliente.setNome(rs.getString("nome"));
				cliente.setId_tipo(rs.getLong("id_tipo"));
				cliente.setCpf_cnpj(rs.getString("cpf_cnpj"));
				cliente.setRg_ie(rs.getString("rg_ie"));
				cliente.setEndereco(rs.getString("endereco"));
				cliente.setFone(rs.getString("fone"));
				cliente.setContato(rs.getString("contato"));
				
				
			}
			rs.close();
			stmt.close();
			return cliente;
		
		}catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
jeloy

hehehe…
caramba…

era isso mesmo

pior que eu fiquei me matando por uma falta de atenção

valeu gente deu certo agora!

Criado 13 de janeiro de 2011
Ultima resposta 13 de jan. de 2011
Respostas 4
Participantes 4