Gostaria de Informacao de como pegar o ultimo registro gravado no bd
8 respostas
J
johnibat
Ola, Pessoal. Sou iniciante em java, mas ja estou me virando até bem,
Estou desevolvendo um sistema para uma empresa, e em todos os cadastros tenho que pegar o ultimo id gravado no banco e mostrar para o usuario adicionado um, ja encontrei algumas informaçoes sobre isso, so que nao consegui entender muito bem. Gostaria de saber se tem alguem nesse Forum que ja tenha feito isso, para me passar umas dicas, ou mesmo um bloco de codigo com exemplo para que possa testar e entender.
Está usando JDBC na sua aplicação? Se sim, você pode usar o próprio SQL para capturar o ultimo valor, o problema que isso é bastante dependente do banco de dados, ou seja, no Firebird é um tipo de comando, no SQL Server é outro, no MySQL outro e assimvai, fale qual seu banco de dados que eu vejo o comando.
Você também pode usar o Próprio ResultSet (apesar de que vai ser mais lento), você pode fazer um “select id… order by id desc” (lembre-se de ter um índice para a ID decrescente), capture o primeiro valor do ResultSet e ele será sua última ID cadastrada
danieldestro
Você pode dar um SELECT MAX() no campo desejado.
Porém, cuidado com a concorrência, pois você pode usar o mesmo número na hora em que dois processos tentam cadastrar.
J
johnibat
ManchesteR:
Está usando JDBC na sua aplicação? Se sim, você pode usar o próprio SQL para capturar o ultimo valor, o problema que isso é bastante dependente do banco de dados, ou seja, no Firebird é um tipo de comando, no SQL Server é outro, no MySQL outro e assimvai, fale qual seu banco de dados que eu vejo o comando.
Você também pode usar o Próprio ResultSet (apesar de que vai ser mais lento), você pode fazer um “select id… order by id desc” (lembre-se de ter um índice para a ID decrescente), capture o primeiro valor do ResultSet e ele será sua última ID cadastrada
Estou gravando no bd do access!!
Jair_Rillo_Junior
Você pode usar o MAX() que o Daniel Desto disse
SelectMAX(id)fromSuaTabela
ou no caso do Access existe o comando TOP, que retorna o número de registros que você quer (o TOP funciona também para SQLServer)
SelectTop1*fromSuaTabelaOrderbyIDDesc
volnei
SELECT MAX(ID) FROM TABELA;
Rafael_Steil
Alguns bancos, como o mysql, suportam a implementacao de getGeneratedKeys() da classe Statement. Ai nao precisa ficar fazendo queries extras.
Mas, como vc esta usando Access, use o MAX() mesmo
Rafael
J
johnibat
[quote=ManchesteR]Você pode usar o MAX() que o Daniel Desto disse
SelectMAX(id)fromSuaTabela
ou no caso do Access existe o comando TOP, que retorna o número de registros que você quer (o TOP funciona também para SQLServer)
SelectTop1*fromSuaTabelaOrderbyIDDesc
Obrigado a todos que tentaram e ajudaram…
Consegui atraves do metodo “SELECT Top 1 * from tabela Order by id Desc”
ate mais
danieldestro
Essa não é a melhor solução, cara. Vai por mim.
O SELECT MAX(campo) é melhor.