Recuperar registro automaticamente ao inserí-lo [resolvido]

7 respostas
J

Pessoal,

Eu gostaria de recuperar um registro após inserí-lo na base (SQL Server).

O problema é que eu não posso usar o “getMax”, pois esse banco é acessado por vários usuários simultâneamente. Então, nada garante que o último registro é o que eu acabei de inserir.

A API do Java fornece suporte a isso ? Alguma sugestão ?

7 Respostas

pauloperes

Olá,

Não entendi muito bem a sua pergunta, mas tudo bem, uma sugestão não sei se é grotesca, mas la vai, se vc fez a inserção através de um objeto, por exemplo: dao.insert(objeto), é só pegar o objeto de volta sem fazer nenhuma consulta.

Valeu,
Paulo

Mauricio_Linhares

jehjeh:
Pessoal,

Eu gostaria de recuperar um registro após inserí-lo na base (SQL Server).

O problema é que eu não posso usar o “getMax”, pois esse banco é acessado por vários usuários simultâneamente. Então, nada garante que o último registro é o que eu acabei de inserir.

A API do Java fornece suporte a isso ? Alguma sugestão ?

Vixe, SQL server é triste… :shock:

Você pode usar isso:

http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Statement.html#getGeneratedKeys()

Pra pegar um result set com as chaves que o banco criou pra fazer a insersão na tabela.

J
Eu já tinha tentado utilizar o getGeneratedKeys(), mas me deu o seguinte erro:
java.lang.UnsupportedOperationException
	at sun.jdbc.odbc.JdbcOdbcStatement.getGeneratedKeys(JdbcOdbcStatement.java:1460)
......

O problema é que essa tabela tem um campo que é autoincrement.

E os valores que eu conheço para fazer uma pesquisa, podem retornar não apenas um resultado.

J

Optei por utilizar uma solução alternativa …

De qualquer forma, valeu pelas dicas. Abraço.

Mauricio_Linhares
jehjeh:
Eu já tinha tentado utilizar o getGeneratedKeys(), mas me deu o seguinte erro:
java.lang.UnsupportedOperationException
	at sun.jdbc.odbc.JdbcOdbcStatement.getGeneratedKeys(JdbcOdbcStatement.java:1460)
......

O problema é que essa tabela tem um campo que é autoincrement.

E os valores que eu conheço para fazer uma pesquisa, podem retornar não apenas um resultado.

O problema não é exatamente a tabela, é o Driver do SQL server que não suporta essa operação (e mais um monte de coisas, ô driver bugado...). Você tá usando o jTDS ou o da Micro$oft?

C

Maurício,

Qual deles é o melhor?

Mauricio_Linhares

o jTDS:

http://jtds.sourceforge.net/

Criado 14 de junho de 2005
Ultima resposta 26 de jun. de 2005
Respostas 7
Participantes 4