Heim > Datenbank > MySQL-Tutorial > Hauptteil

Warum gibt ExecuteScalar() beim Abrufen der ID einer eingefügten Zeile in C# 0 zurück?

Linda Hamilton
Freigeben: 2024-11-08 09:48:02
Original
380 Leute haben es durchsucht

Why Does ExecuteScalar() Return 0 When Retrieving the ID of an Inserted Row in C#?

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());
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage