asp.net Inserir comando para retornar última inserção ID
-
18-09-2019 - |
Pergunta
Eu sou incapaz de recuperar o mais recente id inserido do meu 2000 db SQL Server usando um DataSet em asp.NET
Eu criei um TableAdapter e eu assinalou a "Atualizar a tabela de dados" e "Gerar INSERT, UPDATE e DELETE". Esta auto-gera o preenchimento e métodos GetData, eo Insert, Update, Select e instruções DELETE.
Eu tentei todas as soluções possíveis neste segmento
http://forums.asp.net/t/990365.aspx
mas ainda estou unsuccesfull, ele sempre retorna 1 (= número de linhas afetadas). Eu não quero criar um método de inserção separada como o InsertCommand gerada automaticamente se adapte perfeitamente às minhas necessidades.
Como sugerido no tópico acima, eu tentei atualizar a sintaxe InsertCommand SQL para adicionar SELECIONAR SCOPY_IDENTITY () ou algo semelhante, eu tentei adicionar um parâmetro do tipo ReturnValue, mas tudo que eu vejo é o número de linhas afetadas .
Alguém tem uma opinião diferente sobre este assunto? Desde já, obrigado! Stijn
Solução
Eu encontrei com sucesso uma maneira de obter o ID de incremento após inserção usando meu adaptador de tabela.
A minha abordagem é um pouco diferente, eu estou usando um procedimento de loja para fazer a inserção, por isso o meu comando de inserção tem todos os valores, mas o ID, eu fiz o sp devolver o ID apenas chamando: SET @ ID = SCOPE_IDENTITY () e depois COMMIT TRAN e última linha será RETURN @ID
Então eu procurei os meus parâmetros de adaptador de tabela para InsertCommand e definir o @RETURNVALUE para a coluna do ID incremental da mesa, por isso, quando ele é executado automaticamente colocar o valor de retorno no campo id.
Espero que isso ajuda
Outras dicas
Eu decidi desistir, eu não posso dar ao luxo de perder mais tempo com isso. I usar a instrução Insert após o qual eu faço uma consulta seleção MAX (id) para hget o ID inserção
Se alguém deve ter uma solução, eu vou ser feliz para lê-lo aqui
Graças Stijn
Você precisa dizer a mesa-adaptador de sua tabela para atualizar a dados da tabela após a operação de actualização / inserção. Isto é como você pode fazer isso.
-
Abra as propriedades de TableAdapter -> Padrão Selecione Consulta -> Opções Advnaced . e marque a opção de Atualizar a tabela de dados . Salve o adaptador agora. Agora, quando você chama de atualização na tabela-adaptador, o dados em tabela será atualizada [atualizado] após a atualização / inserção operação e irá refletir os valores mais recentes da tabela de banco de dados. Se a chave primária ou qualquer coloumn está definido para auto-incremento,-tabela de dados terá os mais recente actualização valor post recente.
-
Agora você pode chamar a atualização como TableAdapterObj.Update (ds.dataTable);
-
Leia mais valores da DataTable (ds.dataTable) coloumns e respectivos valores de atribuição na tabela a criança antes de atualização / inserção . Isto irá funcionar exatamente da maneira que quiser.