Ich füge einige Werte mit C # in MVC 4 in eine SQL-Tabelle ein. Eigentlich möchte ich Werte einfügen und die 'ID' des zuletzt eingefügten Datensatzes zurückgeben. Ich benutze den folgenden Code.
public class MemberBasicData
{
public int Id { get; set; }
public string Mem_NA { get; set; }
public string Mem_Occ { get; set; }
}
Die ID wird beim Einfügen automatisch in die Datenbank erhöht.
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;
}
}
}
Ich weiß, ExecuteNonQuery
bezeichnet die Zahlen, die die Zeile beeinflussen. Stattdessen benutze ich
int modified = (int)cmd.ExecuteScalar();
Aber es funktioniert nicht. Bitte helfen Sie mir bei der Lösung dieses Problems. Und gibt es einen Code wie cmd.ExecuteInsertAndGetID()
(funktioniert nicht mit meinem Code).
c#
sql
sql-server
asp.net-mvc-4
neel
quelle
quelle
InsertedID
?Antworten:
Die folgende Lösung funktioniert mit SQL Server 2005 und höher. Sie können die Ausgabe verwenden , um das gewünschte Feld abzurufen. Anstelle der ID können Sie Ihren Schlüssel schreiben, den Sie zurückgeben möchten. mach es so
FÜR SQL SERVER 2005 und höher
FÜR frühere Versionen
quelle
select EmployeeId, * from Employees
Erfordert dieses Fragment in deroutput inserted.EmployeeId
int modified = (int)cmd.ExecuteScalar();
in ein int umzuwandeln. Ich musste Convert verwenden, um es in ein int zu konvertieren.int modified = Convert.ToInt32(cmd.ExecuteScalar());
Ändern Sie die Abfrage in
Dies gibt die zuletzt eingefügte ID zurück, die Sie dann erhalten können
ExecuteScalar
quelle
SCOPE_IDENTITY()
.OUTPUT INSERTED
erschien in IIRC SQL Server 2008 und ist seitdem der bevorzugte Weg, dies zu tunGespeicherte SQL Server-Prozedur:
C # -Code:
Ich hoffe diese helfen dir ....
Sie können dies auch verwenden, wenn Sie ...
quelle
quelle
SCOPE_IDENTITY : Gibt den letzten Identitätswert zurück, der in eine Identitätsspalte im selben Bereich eingefügt wurde. Weitere Informationen finden Sie unter http://technet.microsoft.com/en-us/library/ms190315.aspx
quelle