Hallo Zusammen,
ich lade in einem Programm Daten von Google herunter und speichere Sie in einer lokalen Datenbank.
Derzeit gibt es keinen Sync, so das ich die lokalen Daten immer lösche und durch die Heruntergeladenen ersetze.
Wenn ich den Button zwei mal hintereinander drücke bekomme ich eine DBConcurrencyException.
In dem Button lösche ich die vorhandenen Daten, hole sie von Google, und Berechne zwei Felder in zwei auf dem Form angezeigten DataViewGrids
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| private void btn_log_einlesen_Click(object sender, EventArgs e) { ArbeitszeitenLeeren(); Tabelle(); hatOffenePos(); arbeitszeitBerechnen(); } |
Das Löschen mache ich so:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| private void ArbeitszeitenLeeren() { if (arbeitslogDataSet.Arbeitszeiten.Rows.Count != 0) { for (int i = 0; i < arbeitslogDataSet.Arbeitszeiten.Rows.Count; i++) arbeitslogDataSet.Arbeitszeiten.Rows[i].Delete(); arbeitszeitenSpeichern(); } } |
Speichern geht dann so:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| public void arbeitszeitenSpeichern() { try { this.Validate(); this.arbeitszeitenBindingSource.EndEdit(); this.arbeitszeitenTableAdapter.Update(arbeitslogDataSet.Arbeitszeiten); } catch (DBConcurrencyException ex) { MessageBox.Show("Fehler beim Speichern der Arbeitszeiten" + ex); } catch (InvalidOperationException ex) { MessageBox.Show("Fehler beim Speichern der Arbeitszeiten" + ex); } } |
Dabei kracht es dann, wenn ich das zwei mal hintereinander mache.
Was kann ich denn machen um tableadapter und dataset auf jeden Fall zu schreiben, damit es die DBConcurrencyException nicht mehr gibt?
Oder wie löst man so ein Problem?