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:
publiclongretornaMaior(){
try{
PreparedStatementstmt=connection.prepareStatement("select MAX(id) from contratos");ResultSetrs=stmt.executeQuery();longvalor=0;if(rs.next()){
valor=rs.getLong("max(id)");}
stmt.close();rs.close();returnvalor;}catch(SQLExceptione){
thrownewRuntimeException(e);}
}
Já tenho o ID do contato que quero retornar, como faço para pegar o restante dos atributos ?
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:
publicContratoretornaMaior(){try{PreparedStatementstmt=connection.prepareStatement("SELECT id, nomeProdutor, produto, quantidadeKg, dataNegociacao, valor FROM CONTRATOS WHERE ID = (SELECT MAX(ID) FROM CONTRATOS)");ResultSetrs=stmt.executeQuery();Contratocontrato=newContrato();if(rs.next()){contrato.setId(rs.getLong("id"));Calendardata=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();returncontrato;}catch(SQLExceptione){thrownewRuntimeException(e);}}
E a servlet que está utilizando ela está assim:
@WebServlet("/geraCodigo")publicclassGeraCodigoServletextendsHttpServlet{@Overrideprotectedvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{PrintWriterout=response.getWriter();StringnomeProdutor=request.getParameter("nomeProdutor");Stringproduto=request.getParameter("produto");longquantidadeKg=Long.parseLong(request.getParameter("quantidadeKg"));StringdataEmTexto=request.getParameter("dataNegociacao");CalendardataNegociacao=null;try{Datedate=newSimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);dataNegociacao=Calendar.getInstance();dataNegociacao.setTime(date);}catch(ParseExceptione){out.println("Erro de Conversão de Data");return;}doublevalor=Double.parseDouble(request.getParameter("valor"));Contratocontrato=newContrato();contrato.setDataNegociacao(dataNegociacao);contrato.setNomeProdutor(nomeProdutor);contrato.setProduto(produto);contrato.setQuantidadeKg(quantidadeKg);contrato.setValor(valor);Connectionconnection=(Connection)request.getAttribute("conexao");ContratosDaodao=newContratosDao(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 ?
Jonathan_Medeiros
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.