Laden...

Problem mit MySqlDataAdapter.Update()

Erstellt von Gmi vor 14 Jahren Letzter Beitrag vor 14 Jahren 2.708 Views
G
Gmi Themenstarter:in
33 Beiträge seit 2008
vor 14 Jahren
Problem mit MySqlDataAdapter.Update()

verwendetes Datenbanksystem: MySql 5.0.45, MySQL Connector Net 6.0.3

Hallo zusammen, nach suche Google-Suche und Forum-Suche benötige ich Hilfe bei folgendem Problem:

Das Einfügen von Daten klappt einmal, beim 2. Mal kommt folgende Fehlermeldung: "When MySqlCommandBuilder.ReturnGeneratedIdentifiers is true, MySqlCommand.UpdatedRowSource must be set to None"

Leider findet man zu dieser Fehlermeldung nicht all zuviel was mir weiter hilft.

Hier ein Code Ausschnitt:



conn.Open();           
cb = new MySqlCommandBuilder(da);
int anzahl = da.Update(datasetFilm);
conn.Close();
MessageBox.Show(anzahl + " Zeile(n) eingefügt.");


Hat jemand eine Idee, wie ich das Problem lösen kann?

X
1.177 Beiträge seit 2006
vor 14 Jahren

huhu,

mycsharp ?

😃

Xynratron

Herr, schmeiss Hirn vom Himmel - Autsch!

Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.

G
Gmi Themenstarter:in
33 Beiträge seit 2008
vor 14 Jahren

Hallo Xynratron,

Vielen Dank für Deine Antwort, aber diesen Beitrag kannte ich bereits, ich sehe nicht, wie er mir weiter hilft. Ich habe verschiedene Überladungen des Update-Befehls ausprobiert, es tritt immer das gleiche Problem auf.

Vielleicht sollte ich noch etwas ergänzen: Das Problem tritt nicht auf, wenn Daten in einem vorhandenen Datensatz verändert oder wenn Datensätze gelöscht werden. Nur beim mehrmaligen Einfügen eines neues Datensatzes. Beim ersten Mal wird der Datensatz korrekt eingefügt, beim zweiten Mal kommt der geschilderte Fehler.

Gmi

D
496 Beiträge seit 2005
vor 14 Jahren

wie sieht denn der passende select befehl des adapters von dir aus?

"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."

G
Gmi Themenstarter:in
33 Beiträge seit 2008
vor 14 Jahren

Hallo demondriver235!

Mein Select-Befehl sieht so aus:


String cmd = "SELECT * FROM " + tabName + " ORDER BY indexFilme";
            datasetFilm = new DataSet();
            if (conn.State == ConnectionState.Open)
            {
                try
                {
                    da = new MySqlDataAdapter(cmd, conn);
                    da.Fill(datasetFilm);
                    dataGV1.DataSource = datasetFilm.Tables[0];
                    dataGV1.Update();
                }
                catch (MySqlException ex)
                {
                    MessageBox.Show("Error retrieving data from film database: " + ex.Message);
                }
            }


Gmi

J
3.331 Beiträge seit 2006
vor 14 Jahren

Hallo,

bedeutet das, dass die **DbConnection **zentral erstellt wurde und dauerhaft existiert? Das soll nicht sein! Auf diesen Fehler hatte auch FZelle in dem genannten Link hingewiesen. Wenn du das korrigierst, werden auch unerklärliche Fehler entfallen.

Siehe nochmals unter [Artikel] Ressourcen schonen - Datenbanken richtig öffnen und schließen

Jürgen

G
Gmi Themenstarter:in
33 Beiträge seit 2008
vor 14 Jahren

Hallo juetho,

nein, sie wird für Update neu geöffnet und gleich wieder geschlossen.

Gmi

D
496 Beiträge seit 2005
vor 14 Jahren

du scheinst alles richtig zu machen, es handelt sich wohl um einen MySQL bug
http://bugs.mysql.com/bug.php?id=32732

"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."

G
Gmi Themenstarter:in
33 Beiträge seit 2008
vor 14 Jahren

Das Merkwürdige ist ja, dass offenbar viele den MySql Adapter verwenden, über diesen Fehler aber nicht viel zu finden ist.

Gibt es denn einen "work around"?

Ich könnte die Daten natürlich vor dem Beenden des Programmes in die Datenbank schreiben, denn einmal klappt es ja, aber das ist unbefriedigend.

Gmi

D
496 Beiträge seit 2005
vor 14 Jahren

test das doch mal mit einer version des .net connector vor 5.1.4

"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."

G
Gmi Themenstarter:in
33 Beiträge seit 2008
vor 14 Jahren

Hallo demondriver235,

vielen Dank für den Tipp: mit der Version 5.0.9 des Net Connectors scheint es zu funktionieren!

Gmi

G
Gmi Themenstarter:in
33 Beiträge seit 2008
vor 14 Jahren

Es scheint tatsächlich ein Bug des NET Connector zu sein: Hier ist ein weiterer Link, in dem das Problem diskutiert wird:

http://bugs.mysql.com/bug.php?id=37865

Gmi