Abrufen des Bezeichners einer eingefügten Zeile mit C#
In einer Datenbanktabelle, die ein automatisch inkrementiertes „ID“-Feld enthält, wird die ID abgerufen einer kürzlich eingefügten Zeile erweist sich als wiederkehrende Aufgabe. Dies ist besonders wichtig für nachfolgende Vorgänge, die von der ID abhängig sind.
In Ihrem Fall hat der abgerufene ID-Wert trotz der Ausführung eines Einfügebefehls durchweg Null zurückgegeben. Diese Diskrepanz entsteht durch die Verwendung von ExecuteScalar, das die erste Spalte der ersten vom Befehl zurückgegebenen Zeile abruft. Da keine bestimmte Spalte projiziert wird, wird der Wert am ersten Index abgerufen. Allerdings werden automatisch inkrementierte IDs im Allgemeinen nach dem Einfügen des Befehls generiert, was dazu führt, dass die ID-Spalte zunächst nichts enthält.
Um dieses Problem zu beheben, sollten Sie Ihren Code wie folgt ändern:
MySqlCommand comm = connect.CreateCommand(); comm.CommandText = insertStatement; // Set the insert statement comm.ExecuteNonQuery(); // Execute the command long id = comm.LastInsertedId; // Get the ID of the inserted item
Der entscheidende Unterschied liegt in der Verwendung von ExecuteNonQuery, das gezielt die Einfügeanweisung ausführt, ohne einen Wert zurückzugeben. Anschließend ruft der Aufruf von LastInsertedId den generierten ID-Wert direkt ab.
Dieser Ansatz entspricht der Anforderung, die automatisch inkrementierte ID abzurufen, wodurch das bei ExecuteScalar auftretende Problem beseitigt wird.
Das obige ist der detaillierte Inhalt vonWie rufe ich die ID einer eingefügten Zeile mit C# ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!