Retornar id de tabela de banco de dados [RESOLVIDO]

1. Retornar id de tabela de banco de dados [RESOLVIDO]

Dalison
dalison

(usa Slackware)

Enviado em 19/05/2019 - 14:04h

Eu tou tentando retornar um id da tabela de um baco de dados pra depois usa-lo, mas só tá retornando 0. Como posso fazer isso? A baixo tem o trexo do código responsável por isso.

  try {
Connection conn;
conn = this.conectar(path);
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, nome);
pstmt.setString(2, servico);
pstmt.setString(3, profissional);
pstmt.setString(4, dataHora);
pstmt.executeUpdate();
ResultSet pegar = pstmt.getGeneratedKeys();
id = pegar.getInt(1);
} catch (SQLException ex) {
Logger.getLogger(Inserir.class.getName()).log(Level.SEVERE, null, ex);
}
return id;



  


2. Re: Retornar id de tabela de banco de dados [RESOLVIDO]

Hugo Cerqueira
hrcerq

(usa Outra)

Enviado em 19/05/2019 - 14:59h

Bom, você está usando um preparedstatement e não especificou nele um campo de id. Quando chama o método getGeneratedKeys, ele vai tentar determinar qual campo é mais adequado para representar o id, se ele não tiver sido informado.

Vide javadoc: https://docs.oracle.com/javase/8/docs/api/java/sql/Statement.html#getGeneratedKeys--

Vale lembrar que dependendo do que pretende fazer, pode já usar o método executeQuery no lugar de getGeneratedKeys, e já trabalhar com os valores retornados diretamente sem se preocupar com o id.

---

Atenciosamente,
Hugo Cerqueira

Devuan - https://devuan.org/


3. Re: Retornar id de tabela de banco de dados

Dalison
dalison

(usa Slackware)

Enviado em 19/05/2019 - 16:01h

Eu criei um programa que salva dados no banco de dados, além de ter uma tabela que mostra os dados que foram adicionados. Aí eu pensei, e se alguém digitar alguma coisa errada? Aí eu queria que fosse possível editar os dados pelo próprio programa. Eu preciso do id para atualizar a tabela do banco de dados.


4. Re: Retornar id de tabela de banco de dados

Hugo Cerqueira
hrcerq

(usa Outra)

Enviado em 19/05/2019 - 16:21h

Nesse caso não estou certo de que um preparedstatement seja a melhor forma de implementar isso. Um statement normal vai te dar mais flexibilidade pra montar sua consulta.

O programa deve realizar uma consulta nessa tabela por algum critério que você determinar, e que o usuário de alguma forma vai informar o valor desse critério para ser salva em alguma variável (vamos chamá-la por exemplo de valorDoCriterio). Então uma consulta na tabela deve ser feita, retornando o id quando esse critério for atendido. Algo semelhante a isso:

"SELECT id FROM tabela WHERE criterio = " valorDoCriterio + ";" 


Essa consulta acima vai te retornar o id. Ou melhor, ainda, em vez de um SELECT, você pode já fazer o update, passando o valor do critério e o novo valor do atributo que vai ser alterado como parâmetros, algo assim:

"UPDATE tabela SET campoquevaialterar = " + novoValor + " WHERE criterio = " + valorDoCriterio + ";" 


Aí você usa essa string como parâmetro do statement, e executa o statement.

---

Atenciosamente,
Hugo Cerqueira

Devuan - https://devuan.org/


5. Re: Retornar id de tabela de banco de dados [RESOLVIDO]

Dalison
dalison

(usa Slackware)

Enviado em 19/05/2019 - 18:18h

Resolvi o problema. Coloquei id como atributo da minha classe e usei pegar.getInt com argumento do método setId.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts