Buscar valor de IDENTITY (campo auto incremento) no SQL server

Boa tarde.

Precisei alterar a aplicaçao da empresa para que acesse o banco em SQL Server.

Estou usando o JTDS para conectar ao meu banco, e tudo funciona perfeitamente (até agora), porem, por motivos obscuros preciso inserir um registro nulo no banco, apenas para guardar a posicao dele para uso da aplicacao, e em firebird ele busca o generator dessa forma:

"SELECT gen_id(GEN_" + tabela + "_ID, 1) FROM TABELA"

Ja no sql server, pesquisando verifiquei q conseguiria esse valor dessa forma:

select @@identity from " +tabela;  

E testei isso em uma feramenta para trabalhar com o BD, e obtive a resposta esperada, porem… na minha aplicaçao ele retorna zero.

Alguem tem alguma ideia do motivo para ele retornar zero?
Ou alguma sugestao?

Obrigado!

capiwarrior cuidado ao usar o @@identity por que ele retorna na verdade o identity do ultimo insert executado, então se você for fazer a inserção em duas tabelas diferentes concorrentemente, você pode acabar pegando o identity indesejado.

Acredito que o comando que você quer seja

IDENT_CURRENT( ‘table_name’ )

de uma olhada nesse link abaixo
http://msdn2.microsoft.com/en-us/library/ms175098.aspx

mas se quer um conselho, use um banco de verdade não esse Access melhorado :slight_smile:

Usar o getGeneratedKeys() não resolve?

Aqui um exemplo, leia o tópico todo: