Ich verwende den MySql Connector .net, und ich muss die Einfüge-ID abrufen, die von der letzten Abfrage generiert wurde. Nun nehme ich an, dass der Rückgabewert von MySqlHelper.ExecuteNonQuery
die letzte Einfüge-ID sein sollte, aber es gibt nur 1 zurück.
Der Code, den ich verwende, ist:
%Vor% Allerdings ist insertID
immer 1. Ich habe versucht, eine MySql-Verbindung zu erstellen und manuell zu öffnen / zu schließen, was zu demselben Verhalten führte.
Versuchen Sie, diese Abfrage zu verwenden, um die letzte eingefügte ID zu erhalten -
%Vor%Führen Sie anschließend die DbCommand.ExecuteReader-Methode aus, um IDataReader -
zu erhalten %Vor%... und Informationen vom Leser erhalten -
%Vor%... vergiss nicht, den Leser zu schließen; -)
Ich hatte das gleiche Problem, und nach einigen Tests habe ich herausgefunden, dass das Problem anscheinend die Verbindungsmethode ist; Sie verwenden eine Verbindungszeichenfolge.
Dies ist natürlich, um die Wiederverwendung des automatischen Verbindungspools zu nutzen, aber in diesem Fall gab es mir Schwierigkeiten.
Die endgültige Lösung für mich besteht darin, eine neue Verbindung zu erstellen, die Einfügeabfrage auszuführen und dann das last_insert_id () auszuführen. Auf der selben Verbindung.
Ohne die gleiche Verbindung zu verwenden, kann last_insert_id () etwas zurückgeben, ich weiß nicht warum, aber denke mal, es verliert den Überblick, da es verschiedene Verbindungen sein können.
Beispiel:
%Vor%Ich hoffe, das hilft jemandem!