Error al obtener el último id insertado en un tabla Sql Server
-
lunes, 16 de mayo de 2011 16:20
Hola,
Tengo el siguiente codigo dentro de un boton que se encarga de guardar los datos de una tabla llamada clientes:
this .Validate();
this.clientesBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this.goliherDataSet);
int n = (int)this.clientesTableAdapter.LastInsertId();
En la ultima linea utilizo la consulta LastInsertId que cree en el table adapter con la intencion de que me devuelva el ultimo id insertado en la tabla pero lanza un excepcion del tipo NullReferenceException. Este es el codigo de la consulta:
SELECT SCOPE_IDENTITY() AS Expr1 FROM clientes
Probe tambien solo poniendo SELECT SCOPE_IDENTITY() AS Expr1 pero me lanza el mismo error.
El campo id es de tipo smallint y autoincremental en 1.
Saludos.
Todas las respuestas
-
lunes, 16 de mayo de 2011 16:46Moderador
hola
[ADO.NET] – Parte 6 - Ejemplos simples – Campos Autonumerico (Identity)
no has probado con el
SELECT @@IDENTITY
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina -
jueves, 19 de mayo de 2011 8:47
¿La excepción NullReferenceException de donde proviene?
¿Puedes mostrarnos el código del método LastInsertId()?
-
martes, 24 de mayo de 2011 9:01Moderador
:-)
Hola,Primero de todo: Bien por usar SCOPE_IDENTITY en lugar de @@IDENTITY, que no es la mejor opción. Hay mucha gente que los confunde :-)
En segundo lugar, te da error porque no lo estás usando dentro de la misma sesión. en su lugar te recomiendo que uses IDENT_CURRENT, ya que como dice la ayuda 'The last identity value generated can be for any session and any scope'.
Saludos,
No olvides marcar la respuesta como correcta si te ha sido de utilidad :-)
[MS-MVP-MCTS]
Follow me on Facebook or Twitter!
Mi Perfil MVP en: https://mvp.support.microsoft.com/profile/Lluis
NUG: http://andorradotnet.com
Web: http://www.ordeeno.com
Geeks: http://geeks.ms/blogs/lfranco
- Propuesto como respuesta jtorrecillaMVP, Moderator martes, 24 de mayo de 2011 9:09
-
martes, 24 de mayo de 2011 9:03Moderador
:-)
Hola Leandro,No. No es lo mismo: Mejor no recomiendes el uso de @@IDENTITY. En su lugar -> SCOPE_IDENTITY() o IDENT_CURRENT()
http://msdn.microsoft.com/en-us/library/ms190315.aspx
Saludos,
No olvides marcar la respuesta como correcta si te ha sido de utilidad :-)
[MS-MVP-MCTS]
Follow me on Facebook or Twitter!
Mi Perfil MVP en: https://mvp.support.microsoft.com/profile/Lluis
NUG: http://andorradotnet.com
Web: http://www.ordeeno.com
Geeks: http://geeks.ms/blogs/lfranco
-
sábado, 05 de mayo de 2012 2:22
Hola gracias a todos por la ayuda y disculpen la demora en responder, con la prisa de arreglar el código y terminar la aplicación olvidé pasar por aquí a dterminar de darle seguimiento a la pregunta. Les cuento que probé de todas las formas que me aconsejan y me siguió dando el error.
El ultimo id insertado lo queria para pasarlo de un formulario a otro, entonces para solucionarlo lo que hice fue crear en el formulario base una propiedad
public
intIdServicio { get; set; }
y obtuve el id de la siguiente manera
Luego de esto obtenia el valor de la propiedad desde el formulario destino
Saludos.
- Marcado como respuesta fernaog sábado, 05 de mayo de 2012 2:23

