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á !