MySql Last Insert ID, Stecker .net
Bin ich mit dem MySql-Connector .net, und ich brauche, um die insert-id generiert, die von der letzten Abfrage. Nun, ich nehme an, der Rückgabewert von MySqlHelper.ExecuteNonQuery
sollte die Letzte insert-id hat, aber es gibt einfach zurück, 1.
Den code, den ich verwende, ist:
int insertID = MySqlHelper.ExecuteNonQuery(Global.ConnectionString,
"INSERT INTO test SET var = @var", paramArray);
Jedoch insertID
ist immer 1. Ich habe versucht, erstellen Sie eine MySql-Verbindung und das öffnen/schließen manuell das führte zu dem gleichen Verhalten
- 1 bedeutet 1 Datensatz wurde eingefügt. Um wieder die insertID, müssen Sie eine Abfrage.
- Ist kein "SET" verwendet, auf UPDATES und keine Inserts?
- Sie können es verwenden, für beide: dev.mysql.com/doc/refman/5.5/en/insert.html
Du musst angemeldet sein, um einen Kommentar abzugeben.
1 ist die Nummer der Datensätze erfolgt durch die Abfrage hier wird nur eine Zeile eingefügt wird, so 1 gibt
für die erste id der eingefügten Zeile, die Sie verwenden müssen
scope_identity()
im sqlserver undLAST_INSERT_ID()
in MySqlVerwenden Sie einfach LastInsertedId Feld
Ich hatte das gleiche problem, und nach einigen Tests fand ich heraus, dass das problem scheint zu sein, die Verbindung Methode, die Sie verwenden eine Verbindungszeichenfolge.
Dies ist natürlich zu machen, verwenden Sie das automatische Verbindungspool wiederverwendet, aber in diesem Fall gab es mir die Mühe.
Die endgültige Lösung für mich ist eine neue Verbindung zu erstellen, führen Sie die insert-Abfrage, und führen Sie dann die last_insert_id(). Auf der gleichen Verbindung.
Ohne Verwendung der gleichen Verbindung, last_insert_id() zurückgeben kann alles, ich weiß nicht, warum, aber denke, es verliert den überblick über Dinge wie es sein kann, verschiedene verbindungen.
Beispiel:
Ich hoffe, das jemand hilft!
Versuchen, um diese Abfrage zu verwenden, um get last inserted id -
Führen Sie dann DbCommand.ExecuteReader-Methode, um IDataReader -
...und Holen Sie sich Informationen aus dem reader -
...vergessen Sie nicht, schließen Sie die reader;-)