[RESOLVIDO]Problema com Statement.getGeneratedKeys()

1 resposta
R

Boa tarde galera,

tudo em cima ?

Estou com um probleminha aqui com GeneratedKeys... Não estou conseguindo resgatar no meu Servlet... =/

Preciso do ID da última pessoa cadastrada no banco de dados (MySQL).

Meu persistence:

public void create(Pessoa p) throws Exception {

		open();
		stmt = con.prepareStatement("insert into pessoa values(null,?)",
				stmt.RETURN_GENERATED_KEYS);
		stmt.setString(1, p.getNome());
		stmt.execute();

		rs = stmt.getGeneratedKeys();

		while (rs.next()) {

			Integer id = rs.getInt(1);

		}

		stmt.close();
		close();
	}
protected void cadastrar(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		Pessoa p = new Pessoa(null, request.getParameter("nome"));

		String[] telefones = request.getParameterValues("numero");

		try {

			PessoaDao pd = new PessoaDao();
			TelefoneDao td = new TelefoneDao();

			pd.create(p);

			for (int i = 0; i < telefones.length; i++) {

				td.create(telefones[i], p.getIdPessoa());

			}

			request.setAttribute("mensagem", "Pessoa cadastrada com sucesso.");

		} catch (Exception e) {
			e.printStackTrace();
		}

		request.getRequestDispatcher("index.jsp").forward(request, response);

	}
}

Eu só esqueci como que busca o id do Generated.. eu sei fazer dando um findByMax... mas ai ele pega só se for AUTO_INCREMENT o ID.... mas e se não for.. tem que pegar o último cadastrado... ai estou tentando com GeneratedKey... Ajuda ?

Muito obrigado.

1 Resposta

R

Eu mesmo resolvi galera, acho que foi a fome… rsrsrr tinha equecido… :stuck_out_tongue:

Fiz assim:

Persistence:

public Integer create(Pessoa p) throws Exception {

		open();
		stmt = con.prepareStatement("insert into pessoa values(null,?)");
		stmt.setString(1, p.getNome());
		stmt.execute();

		rs = stmt.getGeneratedKeys();

		rs.next();

		p.setIdPessoa(rs.getInt(1));

		close();

		return p.getIdPessoa();
	}

Servlet:

Pessoa p = new Pessoa();
		p.setNome(request.getParameter("nome"));

		String[] telefones = request.getParameterValues("numero");

		try {

			PessoaDao pd = new PessoaDao();
			TelefoneDao td = new TelefoneDao();

			pd.create(p);

			for (int i = 0; i < telefones.length; i++) {

				td.create(telefones[i], p.getIdPessoa());

			}

			request.setAttribute("mensagem", "Pessoa cadastrada com sucesso.");

		} catch (Exception e) {
			e.printStackTrace();
		}

		request.getRequestDispatcher("index.jsp").forward(request, response);

	}

Qualquer coisa estou aew… !

Criado 17 de janeiro de 2012
Ultima resposta 17 de jan. de 2012
Respostas 1
Participantes 1