asp.net InsertCommand per tornare ultima ID inserto
-
18-09-2019 - |
Domanda
Sono in grado di recuperare l'ultimo ID inserito dal mio SQL Server 2000 db utilizzando un DataSet tipizzato in asp.NET
Ho creato un TableAdapter e ho spuntato la "Refresh datatable" e "Genera Insert, Update e DELETE". Questo genera automaticamente il riempimento e metodi GetData, e l'Insert, Update, selezionare e cancellare le dichiarazioni.
Ho provato ogni possibile soluzione a questo thread
http://forums.asp.net/t/990365.aspx
ma io sono ancora unsuccesfull, restituisce sempre 1 (= numero di righe interessate). Non voglio creare un metodo di inserimento separata come l'InsertCommand generato automaticamente si adatta perfettamente alle mie esigenze.
Come suggerito nel thread di cui sopra, ho cercato di aggiornare la sintassi InsertCommand SQL per aggiungere SCOPY_IDENTITY SELECT () o qualcosa di simile, ho cercato di aggiungere un parametro di tipo ReturnValue, ma tutto quello che ottiene è il numero di righe interessate .
C'è qualcuno che ha un approccio diverso su questo? Grazie in anticipo! Stijn
Soluzione
Ho trovato con successo un modo per ottenere l'id incrementale dopo l'inserto con il mio adattatore tabella.
Il mio approccio è un po 'diverso, sto usando una procedura Store per rendere l'inserto, quindi il mio comando di inserimento ha tutti i valori, ma l'ID, ho fatto la sp restituire l'ID solo chiamate: SET @ ID = SCOPE_IDENTITY () e poi COMMIT TRAN e ultima linea sarà RITORNO @ID
Poi ho cercato i miei parametri adattatori da tavolo per InsertCommand e impostare il @RETURNVALUE alla colonna dell'ID incrementale della tabella, in modo che quando è eseguito automaticamente mettere il valore di ritorno sul campo id.
Spero che questo aiuto
Altri suggerimenti
Ho deciso di rinunciare, non posso permettermi di perdere altro tempo su questo. Io uso la dichiarazione Inserisci dopo che faccio una query di selezione MAX (id) per hget l'ID inserto
Se qualcuno dovesse avere una soluzione, sarò felice di leggere qui
Grazie Stijn
Devi dire tavolo adattatore della vostra tabella per aggiornare la tabella dati dopo operazione di aggiornamento / inserto. Ecco come si può fare.
-
Aprire le proprietà di TableAdapter -> default Selezionare Interrogazione -> Opzioni Advnaced . e Selezionare l'opzione di Aggiornare la tabella di dati . Salvare l'adattatore ora. Ora, quando si chiama aggiornamento sulla tabella-adattatore, il tabella dati saranno aggiornati [aggiornati] dopo l'aggiornamento / operazione di inserimento e rifletterà i valori più recenti da tabella di database. se la colonnina chiave primaria o qualsiasi è impostato su auto-incremento, la tabella dati avrà coloro ultimo valore postale recente aggiornamento.
-
Ora è possibile chiamare l'aggiornamento come TableAdapterObj.Update (ds.dataTable);
-
Leggi gli ultimi valori dalle coloumns DataTable (ds.dataTable) e assegnare rispettivi valori nella tabella figlio prima di aggiornamento / inserimento . Ciò funzionerà esattamente nel modo desiderato.