Tengo la siguiente función que ejecuta una consulta y devuelve verdadero en caso de éxito y falso en caso de error. No, quería extender el método para que con cada consulta de inserción que se active, la clase var insertId
contenga el ID de la última fila insertada.C# + SQL Server ExecuteScalar() no devuelve el último ID insertado
El problema es que insertId
es siempre 0, por lo que de alguna manera el executeScalar()
no devuelve la ID.
¿Alguna idea? U otras soluciones para obtener el identificador de la última consulta de inserción ....
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;
}
Estoy usando la versión de 2005 ... Voy a intentar esto, pero va a ser un trabajo porque todas las consultas de inserción ya están escritas ... EDITAR: ¡Gracias! Esto funcionó, el resultado ahora contiene la identificación de la fila insertada – jhoevenaars
Muchas gracias. Pero recuerde que Inserted.ID significa Inserted.name of ID column :) –
Muchas gracias, funciona de maravilla: D – cheloncio