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

Foi útil?

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.

  1. 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.

  2. Agora você pode chamar a atualização como TableAdapterObj.Update (ds.dataTable);

  3. 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.

texto alt http://ruchitsurati.net/files/tds1.png

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top