Retornar Contato do Banco (Solucionado) !

Bom dia, fiz um select com MAX(ID) que busca pra mim o maior id de contratos do meu banco, para saber qual foi o ultimo contato adicionado. O que acontece é que eu preciso pegar os dados deste contrato e gravar em atributos de um contrato para retornar o objeto na função. Como eu faria ?

Esta é a função que fiz para retornar a ID do ultimo contrato adicionado ao banco de dados:

	public long retornaMaior() {
		try {
		PreparedStatement stmt = connection.prepareStatement("select MAX(id) from contratos");
		ResultSet rs = stmt.executeQuery();
		long valor = 0;
		if(rs.next()) {
			valor = rs.getLong("max(id)");
		}
		stmt.close();
		rs.close();
		return valor;
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
		
	}

Já tenho o ID do contato que quero retornar, como faço para pegar o restante dos atributos ?

Basta fazer um select mais elaborado que retorne todos os campos que você precisa e recuperar!

SELECT ID, CAMPO1, CAMPO2, CAMPO3, CAMPO4, CAMPO5
FROM CONTRATOS
WHERE ID = (SELECT MAX(ID) FROM CONTRATOS)

Feito o select é só recuperar os valores:

valor = rs.getLong("ID");
valor1 = rs.getString("CAMPO1");
valor2 = rs.getString("CAMPO2");
valor3 = rs.getString("CAMPO3");
valor4 = rs.getString("CAMPO4");
valor5 = rs.getString("CAMPO5");

Muito obrigado, já abusando da boa vontade, a respeito do mesmo código, estou com outra dúvida, preciso passar este contrato que criei pra uma JSP, sei que devo usar o RequestDispatcher, mas não sei como utiliza-lo neste caso. Alguem podería me ajudar ?

A função está assim:

	public Contrato retornaMaior() {
		try {
		PreparedStatement stmt = connection.prepareStatement("SELECT id, nomeProdutor, produto, quantidadeKg, dataNegociacao, valor FROM CONTRATOS WHERE ID = (SELECT MAX(ID) FROM CONTRATOS)"); 
		ResultSet rs = stmt.executeQuery();
		Contrato contrato = new Contrato();
		if(rs.next()) {
			contrato.setId(rs.getLong("id"));
			Calendar data = Calendar.getInstance();
			data.setTime(rs.getDate("dataNegociacao"));
			contrato.setDataNegociacao(data);
			contrato.setNomeProdutor(rs.getString("nomeProdutor"));
			contrato.setProduto(rs.getString("produto"));
			contrato.setQuantidadeKg(rs.getLong("quantidadeKg"));
			contrato.setValor(rs.getDouble("valor"));
		}
		stmt.close();
		rs.close();
		return contrato;
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
		
	}

E a servlet que está utilizando ela está assim:

@WebServlet("/geraCodigo")
public class GeraCodigoServlet extends HttpServlet{
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		String nomeProdutor = request.getParameter("nomeProdutor");
		String produto = request.getParameter("produto");
		long quantidadeKg = Long.parseLong(request.getParameter("quantidadeKg"));
		String dataEmTexto = request.getParameter("dataNegociacao");
		Calendar dataNegociacao = null;
		
		try {
			Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);
			dataNegociacao = Calendar.getInstance();
			dataNegociacao.setTime(date);
		} catch (ParseException e) {
			out.println("Erro de Conversão de Data");
			return;
		}
		
		double valor = Double.parseDouble(request.getParameter("valor"));
		
		Contrato contrato = new Contrato();
		contrato.setDataNegociacao(dataNegociacao);
		contrato.setNomeProdutor(nomeProdutor);
		contrato.setProduto(produto);
		contrato.setQuantidadeKg(quantidadeKg);
		contrato.setValor(valor);
		
		Connection connection = (Connection) request.getAttribute("conexao");
		ContratosDao dao = new ContratosDao(connection);
		dao.adiciona(contrato);
		
		out.println("<html> <head> <title> Numero de contrato </title> </head> <body>");
		out.println("O número de contrato é: " + dao.retornaMaior().getId() + "para o produtor " + dao.retornaMaior().getNomeProdutor() + "</body> </html>");
		
	}
}

O que eu preciso é substituir esse final (Tudo enviado pelos dois out.println) usando o requestdispatcher pra encaminhar para contrato-gerado.jsp. Porém preciso que o contrato vá junto ! Como faço ?

Te aconselho criar um novo tópico com a sua nova dúvida!

Fica mais fácil do pessoal visualizar e colaborar com a resolução do problema.

Ok muito obrigado, ajudou demais já !