Ho la seguente funzione che esegue una query e restituisce true in caso di successo e falso in caso di errore. No, volevo estendere il metodo in modo che con ogni query inserita che viene attivata, la classe var insertId
contenga l'ID dell'ultima riga inserita.C# + SQL Server ExecuteScalar() non restituisce l'ultimo ID inserito
Il problema è che insertId
è sempre 0, quindi in qualche modo lo executeScalar()
non restituisce l'ID.
Qualche idea? O altre soluzioni per ottenere l'ID dell'ultimo query di inserimento ....
public int insertId;
public bool executeCommand(string q) {
q += "; SELECT @@IDENTITY AS LastID";
bool retour = true;
SqlConnection myCon = new SqlConnection(Settings.DSN);
SqlCommand cmd = new SqlCommand(q, myCon);
try {
cmd.Connection.Open();
insertId = (int)cmd.ExecuteScalar();
if (insertId > 0) {
MessageBox.Show(insertId.ToString());
}
myCon.Close();
} catch (Exception ex) {
this.error = ex.Message;
retour = false;
}
return retour;
}
Sto usando la versione 2005 ... Ho intenzione di provare questo, ma sarà un po 'di lavoro perché tutte le query di inserimento sono già scritte ... EDIT: Grazie! Questo ha funzionato, il risultato ora contiene l'id della riga inserita – jhoevenaars
Grazie mille. Ma ricorda che Inserted.ID significa colonna Inserted.name of ID :) –
Muchas gracias, funciona de maravilla: D – cheloncio