Estoy insertando algunos valores en una tabla SQL usando C # en MVC 4. En realidad, quiero insertar valores y devolver el 'ID' del último registro insertado. Utilizo el siguiente código.
public class MemberBasicData
{
public int Id { get; set; }
public string Mem_NA { get; set; }
public string Mem_Occ { get; set; }
}
El ID se incrementa automáticamente en la base de datos cuando se inserta.
public int CreateNewMember(string Mem_NA, string Mem_Occ )
{
using (SqlConnection con=new SqlConnection(Config.ConnectionString))
{
using(SqlCommand cmd=new SqlCommand("INSERT INTO Mem_Basic(Mem_Na,Mem_Occ) VALUES(@na,@occ)",con))
{
cmd.Parameters.AddWithValue("@na", Mem_NA);
cmd.Parameters.AddWithValue("@occ", Mem_Occ);
con.Open();
int modified = cmd.ExecuteNonQuery();
if (con.State == System.Data.ConnectionState.Open) con.Close();
return modified;
}
}
}
Sé que ExecuteNonQuery
denota los números que afectan a la fila. En lugar de eso, uso
int modified = (int)cmd.ExecuteScalar();
Pero no funciona. Por favor ayúdame a resolver esto. Y hay algún código como cmd.ExecuteInsertAndGetID()
(que no funcione con mi código).
c#
sql
sql-server
asp.net-mvc-4
neel
fuente
fuente
InsertedID
?Respuestas:
La siguiente solución funcionará con SQL Server 2005 y versiones posteriores. Puede utilizar la salida para obtener el campo obligatorio. en lugar de id, puede escribir la clave que desea devolver. Hazlo asi
PARA SQL SERVER 2005 y superior
PARA versiones anteriores
fuente
select EmployeeId, * from Employees
Requiere este fragmento en la declaración de inserción:output inserted.EmployeeId
int modified = (int)cmd.ExecuteScalar();
a un int. Tuve que usar Convert para convertirlo en un int.int modified = Convert.ToInt32(cmd.ExecuteScalar());
Cambie la consulta a
Esto devolverá la última identificación insertada que luego puede obtener con
ExecuteScalar
fuente
SCOPE_IDENTITY()
.OUTPUT INSERTED
apareció en IIRC SQL Server 2008 y ha sido la forma preferida de hacerlo desdeProcedimiento almacenado de SQL Server:
Código C #:
Espero que estos te ayuden ...
También puedes usar esto si quieres ...
fuente
fuente
SCOPE_IDENTITY : devuelve el último valor de identidad insertado en una columna de identidad en el mismo ámbito. para más detalles http://technet.microsoft.com/en-us/library/ms190315.aspx
fuente