Ich habe die folgende Funktion, die eine Abfrage ausführt und true bei Erfolg und false bei Fehler zurückgibt. Nein Ich wollte die Methode so erweitern, dass bei jeder einzufügenden Einfüge-Abfrage die Klasse var insertId
die ID der zuletzt eingefügten Zeile enthält.
Das Problem ist, dass insertId
immer 0 ist, also gibt die executeScalar()
die ID nicht zurück.
Irgendwelche Ideen? Oder andere Lösungen, um die ID der letzten Einfügeabfrage zu erhalten ....
%Vor% Sie sollten Ihre INSERT
ändern, um diese eingefügte ID sofort an Sie zurückzugeben (in einer OUTPUT
-Klausel)! Dies funktioniert ab SQL Server 2005 - Die OUTPUT
-Klausel ist in SQL Server 2000 oder früher nicht verfügbar (Sie haben nicht angegeben, welche Version von SQL Server Sie in Ihrer Frage verwenden.) .). Weitere Informationen zur OUTPUT
-Klausel in der MSDN-Onlinedokumentation finden Sie hier.
Ändern Sie Ihre Einfügung wie folgt:
%Vor%und dann, wenn Sie Ihre insert-Anweisung von C # ausführen, sollten Sie tun können:
%Vor% und Ihre result
Variable sollte jetzt den richtigen, neu eingefügten Wert enthalten!
Versuchen Sie SCOPE_IDENTITY () anstelle von @@ IDENTITY. Wenn das nicht funktioniert, können Sie das Tabellenschema und die einzufügende Abfrage hochladen.
Tags und Links sql-server c#