C# Datenbank Einträge hinzufügen und speichern

mrmorning

Cadet 3rd Year
Registriert
Dez. 2020
Beiträge
33
Hallo zusammnen,
ich habe eine Datenbank in C# erstellt welche auch soweit funktioniert. Wenn ich allerdings das Programm ausführe und nun auf neuen Eintrag hinzufügen klicke und danach auf Speichern, speichert er zwar den Eintrag in dem Moment aber wenn ich das Programm schließe und wieder neu öffne ist der Eintrag nicht mehr da. Hat wer eine Idee wie man das lösen kann das der Eintrag beim erneuten Ausführen des Programms noch da ist ?
 
Du speicherst vermutlich die Daten NICHT in der Datenbank (welche ist das, wie eingebunden?) Sondern nur in deinem Datenmodell. Daher "siehst" Du die Daten.

Bei Neustart sind diese dann nicht mehr vorhanden.

  • Welchen OR-Mapper nutzt Du oder Datencontext?
  • Ich tippe mal auf VS Studio oder welche IDE nutzt Du?
  • Nutzt Du transactions? Werden diese auch commited?
  • Poste mal den Codeblock, welcher die Daten speichert
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Dalek und NJay
Die Datenbank ist eine SQL Datei welche aber nicht über SQL programmiert wurde sondern über C# selber. Ich nutze Visual Studio 2019
Ich nutze keine transactions
 
Ich vermute mal du meinst eine Sqlite datenbank?
 
mrmorning schrieb:
Ich nutze keine transactions
Doch tust du.
aus dem was du in c# schreibst, wird eine SQL Query generiert und ausgeführt. Das ausführen dieser Query ist eine Transaktion.
Eine präzise erklärung kann ich gleich raussuchen
 
Kurze Frage ich möchte einen Button hinzufügen mit der Funktion Hinzufügen. Wenn ich nun schreibe Videodatenbank = new Videodatenbank wird dann der neue Eintrag gespeichert beim erneuten öffnen?
 

Anhänge

  • Screenshot (61).png
    Screenshot (61).png
    192,3 KB · Aufrufe: 207
Ohne den Code zu zeigen der das ORM (z.B. EF/EF Core) verwendet wird dir niemand helfen können. Und wenn du diesen Code gar nicht hast dann liegt da vermutlich das Problem, da du nie mit der Datenbank redest. In diesem Fall solltest du dich in Entity Framework bzw. Entity Framework Core einlesen (oder SQL direkt schreiben z.B. mit Dapper).
 
Möglicherweise erstellst du die Datenbank jedes Mal neu, wenn du code first EF nutzt.
Zwei Möglichkeiten:
  • Du beschäftigst dich selbst damit, schaust z.B. mal ohne dein Programm in die Datenbank, benutzt debugger usw.
  • Du zeigst viel mehr Code und was für Technologien du nutzt.
 
Was genau ist denn deine „Videodatenbank“ und wieso willst du pro Klick eine neue Instanz erstellen (und das auch noch in der Klasse selbst, die offensichtlich eine View ist)? Unabhängig davon vermute ich, dass du eine In Memory DB verwendest.
 
Du musst beim Speichern deine Daten persistieren. Anderenfalls bleiben sie im flüchtigen RAM und sind weg.
 
In deinem Code Fragment ist ja nichts zu sehen, außer, dass Du ein Objekt neu erstellst.

Du musst ja irgentwo ein Videodatenbank.Add haben und hier ein neuen Objekt zuweisen.

Dann muss danach auch ein SubmitChanges erfolgen. Er damit werden die Änderungen in die DB auch geschrieben.
 
Zurück
Oben