1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Recuperar Primary Key para utilizar como FK em outra tabela - JDBC

Olá pessoal, seguinte: estou precisando recuperar a chave primaria gerada após eu salvar em uma tabela para utiliza-la como chave estrangeira em outra tabela do BD. Procurei alguns tópicos antigos aqui e mesmo seguindo a risca não obtive sucesso. Segue o código e a Exception.

Eis a Exception gerada:

java.sql.SQLException: Generated keys not requested. You need to specify Statement.RETURN_GENERATED_KEYS to Statement.executeUpdate() or Connection.prepareStatement(). at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927) at com.mysql.jdbc.StatementImpl.getGeneratedKeys(StatementImpl.java:1923)

E o código:

    public void cadastrarPaciente(Paciente dadosDoPaciente) throws SQLException {
        String sql = "insert into ficha_atendimento (nome, "
                + "sexo, paciente_indigena, "
                + "cartao_sus) "
                + "values (?,?,?,?)";

        PreparedStatement pstmt = conexao.prepareStatement(sql);

        pstmt.setString(1, dadosDoPaciente.getNome());
        pstmt.setString(2, dadosDoPaciente.getSexo());
        pstmt.setString(3, dadosDoPaciente.getPacienteIndigena());
        pstmt.setString(4, dadosDoPaciente.getCartaoSUS());

        pstmt.execute();

        int chave = 0;
        ResultSet rs = pstmt.getGeneratedKeys();
        if(rs.next()){
            chave = rs.getInt(1);
        }

        System.out.println(chave); // testando retorno da chave

        pstmt.close();
        conexao.close();
    }
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java jdbc mysql dao ou faça a sua própria pergunta.