Csharp und mysql?

...komplette Frage anzeigen C# last_insert_id();  - (programmieren, MySQL, Visual Studio)

2 Antworten

Was genau fehlt Dir? Was nutzt Du? ADO.Net oder Entity? Weißt Du überhaupt wie man grundsätzlich in einer Datenbank liest?

Antwort bewerten Vielen Dank für Deine Bewertung
Orsovai 19.07.2016, 11:22

Ups, habe jetzt erst das Bild gesehen.

Setze ein erneutes SQL Statement ab "select max(ID) from Tabelle"; einen neuen Reader und da hast Dus.

0
Hadesz 19.07.2016, 11:23

Ich programmiere mit C#, und meine Datenbank liegt auf MySql Workbench, und in einer Datenbank zeigt man die letzte id mit Last_insert_id(); doch irgendwie will es in mysql nicht so klappen

Mfg :) 

0
CrystalixXx 19.07.2016, 23:08
@Hadesz

Du solltest die Verbindung am Ende wieder schließen und nicht klonen (.Close statt .Clone).

Alternativ kannst du auch das Using-Statement verwenden, dann geschieht das Schließen und Freigeben automatisch.

0
Orsovai 19.07.2016, 11:28

Okay :)

Versuch mal das SQL Query zuerst auszuführen mittels ExecuteNonQuery und danach mit dem Reader zu lesen.

0
Orsovai 19.07.2016, 11:42
@Orsovai

So sollte es eigentlich klappen:

 static void Main()
{
string qry = "select Last_insert_ID() from Deine Tabelle;";
MySqlConnection con = new MySqlConnection("ConnectionString");
MySqlCommand cmd = new MySqlCommand(qry,con);

cmd.ExecuteNonQuery();

MySqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
System.Windows.Forms.MessageBox.Show(String.Format("Your ID is {0}", reader.GetInt16(0)));
}

}
1
Hadesz 20.07.2016, 11:20
@Orsovai

Danke euch, werde es gleich ausprobieren :)

0
Hadesz 20.07.2016, 12:53
@Hadesz

Leider klappt es nicht, gibt in der MessageBox nur das aus, was ihm vorgeschrieben ist, und zwar dieses Your ID is {0}

0
Hadesz 20.07.2016, 13:08
@Orsovai

So, mit Last_insert_id() hat es nicht funktioniert, hab es mit select max(id) from tabelle; gemacht und es funktioniert wundervoll. dankö

0
Orsovai 20.07.2016, 13:16

Das ist seltsam, eigentlich sollte es funktionieren. Mit max(ID) besteht eben die Gefahr, dass die letzte ID nicht die größte ist vor allem wen von mehreren Applikationen aus auf die DB zugegriffen wird oder sogar händisch daran gearbeitet wird.

1
Hadesz 20.07.2016, 13:27
@Orsovai

Aber wenn ich Auto_Increment drine habe, und er ja dann die größte ID hinzufügt mit dem Klick, dann gibt er ja in der MessageBox ja die richtigie ID raus. Das wollte ich erstmal erreichen.

0

Mit mysqli_insert_id bekommst du die letzte erzeugte ID

Antwort bewerten Vielen Dank für Deine Bewertung
Hadesz 19.07.2016, 11:16

Jagut, aber wie programmiere ich es denn, ich dachte es wäre für php gedacht

0
subhIQ 19.07.2016, 11:38
@Hadesz
MySqlCommand dbcmd = _conn.CreateCommand();
dbcmd.CommandText = sqlCommandString;
dbcmd.ExecuteNonQuery();
long imageId = dbcmd.LastInsertedId;
1

Was möchtest Du wissen?