Recuperar registro automaticamente ao inserí-lo [resolvido]

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 ?

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

[quote=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 ?[/quote]

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.

Eu já tinha tentado utilizar o getGeneratedKeys(), mas me deu o seguinte erro:

[code]java.lang.UnsupportedOperationException
at sun.jdbc.odbc.JdbcOdbcStatement.getGeneratedKeys(JdbcOdbcStatement.java:1460)

[/code]

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.

Optei por utilizar uma solução alternativa …

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

[quote=jehjeh]Eu já tinha tentado utilizar o getGeneratedKeys(), mas me deu o seguinte erro:

[code]java.lang.UnsupportedOperationException
at sun.jdbc.odbc.JdbcOdbcStatement.getGeneratedKeys(JdbcOdbcStatement.java:1460)

[/code]

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.[/quote]

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?

Maurício,

Qual deles é o melhor?

o jTDS:

http://jtds.sourceforge.net/