Hallo liebe C#-Community,
ich bin neu hier im Forum. Was die Programmierung mit C# angeht auch, allerdings fiel mit der Umstieg von VB.Net nicht sonderlich schwer.
Ich habe folgendes Problem: In eine Tabelle (t_trainingsplan) meiner Access-Datenbank wird ein Datensatz eingefügt:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| public void TrainingsplanEinfuegen(int WochentagNr, int SportartNr, int Saetze, int Wiederholungen, double Dauer) { this.cmd.CommandText = @"INSERT INTO t_trainingsplan (WochentagNr, SportartNr, Saetze, Wiederholungen, Dauer)" + @"VALUES (@WochentagNr, @SportartNr, @Saetze, @Wiederholungen, @Dauer);";
this.cmd.Parameters.Add("@WochentagNr", OleDbType.Integer).Value = WochentagNr; this.cmd.Parameters.Add("@SportartNr", OleDbType.Integer).Value = SportartNr; this.cmd.Parameters.Add("@Saetze", OleDbType.Integer).Value = Saetze; this.cmd.Parameters.Add("@Wiederholungen", OleDbType.Integer).Value = Wiederholungen; this.cmd.Parameters.Add("@Dauer", OleDbType.Double).Value = Dauer;
this.cmd.ExecuteNonQuery(); } |
Das funktioniert nach dem Programmstart beim ersten Insert problemlos. Jedoch wird danach bei jedem weiteren Insert (der Nutzer kann sich einen Trainingsplan zusammenstellen, indem er bestimmte Sportarten den Wochentagen zuordnen kann...) immer der gleiche
erste Datensatz wieder eingefügt. Und das, obwohl die Parameter beim Debuggen die vom Nutzer ausgewählten korrekten Werte besitzen.
Kennt jemand das Problem bzw. kann mir wer helfen?
Edit: Ich hab nun herausgefunden, dass es wohl an den Parametern liegt. Ich habe im Hauptformular eine globale Variable "AccDb" vom Typ Datenbank. Die Datenbank-Klasse hab ich selbst geschrieben. Darin befindet sich auch die Funktion "TrainingsplanEinfuegen", die nach Klicken eines Buttons aufgerufen wird. Wenn ich diese erweitere um:
this.cmd.Parameters.Clear();
funktioniert alles, wie es soll. Ist das Vorgehen so in Ordnung? Oder sollte ich das generell anders lösen?