Abrufen der ID einer eingefügten Zeile in C#
Erfassen der ID der neu generierten Zeile beim Einfügen neuer Daten in eine Datenbanktabelle können für die Weiterverarbeitung von entscheidender Bedeutung sein. In diesem Artikel wird ein häufiges Problem untersucht, bei dem die Verwendung von ExecuteScalar() zum Abrufen der eingefügten Zeilen-ID durchweg 0 zurückgibt, obwohl die tatsächliche ID ungleich Null ist.
Der bereitgestellte Codeblock:
MySqlCommand comm = connect.CreateCommand(); comm.CommandText = insertInvoice; comm.CommandText += "\'" + invoiceDate.ToString("yyyy:MM:dd hh:mm:ss") + "\', " + bookFee + ", " + adminFee + ", " + totalFee + ", " + customerID + ")"; int id = Convert.ToInt32(comm.ExecuteScalar());
versucht, eine Einfügeanweisung auszuführen und die generierte ID mithilfe von ExecuteScalar() abzurufen. Dieser Ansatz schlägt jedoch in der Regel aufgrund der Unvorhersehbarkeit der ExecuteScalar()-Methode in nichtskalaren Kontexten fehl.
Um die ID der eingefügten Zeile zuverlässig abzurufen, kann der folgende Code verwendet werden:
MySqlCommand comm = connect.CreateCommand(); comm.CommandText = insertStatement; comm.ExecuteNonQuery(); long id = comm.LastInsertedId;
Nachdem wir die Einfügeanweisung mit ExecuteNonQuery() ausgeführt haben, können wir auf die LastInsertedId-Eigenschaft des Befehlsobjekts zugreifen, die die generierte ID für das bereitstellt zuletzt eingefügte Zeile. Diese Methode wird zum zuverlässigen Abrufen der eingefügten Zeilen-ID empfohlen.
Außerdem wird die MySQL-Syntax zum Abrufen der eingefügten ID (last_insert_id()) in C# nicht unterstützt. Stattdessen kann LastInsertedId als Teil des MySqlCommand-Objekts verwendet werden, um die generierte ID zu erhalten.
Das obige ist der detaillierte Inhalt vonWarum gibt ExecuteScalar() beim Abrufen der ID einer eingefügten Zeile in C# 0 zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!