Laden...

Microsoft Acess Datenbank in C#/WPF einbinden

Erstellt von Luksas52 vor 8 Jahren Letzter Beitrag vor 8 Jahren 5.547 Views
L
Luksas52 Themenstarter:in
7 Beiträge seit 2015
vor 8 Jahren
Microsoft Acess Datenbank in C#/WPF einbinden

Hallo,
Ich bin derzeit dabei mir C# und WPF anzueignen und schreibe deswegen gerade ein Art 2D Karte des Universums (nicht gerade vollständig, das würde einfach zu lange dauern). Navigation und Steuerung klappt schon ganz gut, allerdings möchte ich unbedingt auch Informationen aus einer Datenbank mit einbinden.
Da ich bisher noch nichts mit SQL Datenbanken gemacht habe wollte ich eine Access Datenbank verwenden (damit kenn ich mich wenigstens einigermaßen aus).
Die Datenbank enthällt einige Informationen zu ausgewählten Himmelskörper welche ich dem Nutzer gerne Anzeigen lassen möchte (Ein Listen-Feld sollte sich dazu ganz gut eignen oder?). Zusätzlich möchte ich einen Button mit anfügen mit dem bestimmte Einträge als "Gesehen" Markiert werden können (ist in der Datenbank als Ja/Nein Feld realisiert).
Mein Problem ist jetzt aber das ich nicht so recht weiß wie ich die Informationen aus der Datenbank in meine Listen bekomme...
Ich hab die Datenbank als Datenquelle hinzugefügt und auch die Einzelnen Tabellen und Spalten werden mit in Server-Explorer Angezeigt (Unter Datenquellen stehen sie als Astro bis Astro8 drinn).

Ich bin mir fast sicher das es dazu Texte/Tutorials gibt, aber das meiste das ich gefunden habe ist für SQLite datenbanken oder es funktioniert nicht oder ist ziemlich übertrieben komplex dargestellt und sagt mir somit auch wenig...
In meiner Verzweiflung hab ich sogar das ein oder andere Tutorial auf Youtube angeschaut, was mir aber auch nicht wirklich weitergeholfen hat...

Kann mir wer hierzu vlt etwas brauchbares empfehlen oder mir sogar sagen wie das funktioniert? (Vor allem wie ich meine Daten anspreche/auslese/ändere)

Vielen Dank schonmal!

16.806 Beiträge seit 2008
vor 8 Jahren

Access ist keine Datenbank, sondern ein Relikt, das man vermeiden sollte.
Es lässt sich via .NET auch nur über Steinzeit-Schnittstellen wie ODBC/OleDB ansprechen.

Nimm lieber eine Embedded-Datenbank wie zB LocalDB oder Sqlite, die sich über modernes ADO.NET ansprechen lässt.

5.299 Beiträge seit 2008
vor 8 Jahren

Hier gibts eine der seltenen Beispiel-Anwendungen, wo auch eine Datenbank mit drin ist, sodass du zumindest was lauffähiges auf deim Compi hast: https://www.vb-paradise.de/index.php/Thread/112141-WPF-EF-Code-First-Datenbanksample/
Leider sind keine Erklärungen dabei.
Jedoch wenn du das Teil gründlich studierst, und interessante Fragen stellst - vlt. lässt sich der Autor dann doch noch herbei, bisserl was zu erläutern.

Jdfs. son Beispiel finde ich wertvoller als umfangreiche Tutorials, denen dann aber kein funktionierenden Download beiliegt.

(Naja - Geschmacksache - jdfs eine wertvolle Ergänzung allemal)

Der frühe Apfel fängt den Wurm.

H
523 Beiträge seit 2008
vor 8 Jahren

Google spuckt eigentlich eine ganze Menge guter Links aus:
https://www.google.de/?gws_rd=ssl#q=c%23+sqlite+example

Vielversprechend sieht beispielsweise dieses Tutorial inkl. Beispielprojekt-Download aus: http://www.codeproject.com/Articles/746191/SQLite-Helper-Csharp

5.299 Beiträge seit 2008
vor 8 Jahren

und welches davon hast du praktisch ans Laufen gebracht?

Der frühe Apfel fängt den Wurm.

H
523 Beiträge seit 2008
vor 8 Jahren

Das Beispiel welches ich als vielversprechend betitelt habe funktioniert einwandfrei. Daraus lassen sich alle benötigten Informationen entnehmen.

5.299 Beiträge seit 2008
vor 8 Jahren

cool - hab ich auch grad angeguckt.
Also ein Datenmodell gibts da ja nicht, sondern das ist ja eine Art kleiner Datenbank-Manager, also etwas, mit dem man eine Datenbank einrichten oder inspizieren kann (aber nicht produktiv nutzen).
Man kann auch Sql-Abfragen eingeben, und bekommt Tabellen zu sehen.

Aber ein Datenbank-Managerchen scheint mir als Vorlage einer db-basiserten Nutzanwendung komplett ungeeignet.
Bei einer Nutzanwendung muss es ein typisiertes Datenmodell in der Client-Anwendung geben, Datenbank-Management (also Tabellen anlegen, Spalten etc) - sowas wird von einer Nutzanwendung ja ühaupt nicht ausgeübt.
Also was da geboten wird dürfte den TE eher von einer Lösung abbringen, denn zuträglich sein.
Auch ist es eine WinForms-Anwendung, und arbeitet ausschließlich mit untypisierten Datasets.

Was ich empfahl, baut auffm Entity-Framework auf, sodass man ein ordentlich typisiertes Datenmodell im Client hat, dagegen man programmieren kann.
Und EF ist halt wohl Stand der Technik.
Ich selber bevorzuge ja eiglich typisierte Datasetse - aber in die Wpf-Umgebung passen die sich nur schlecht ein - man kann für typisierte DataRows nicht so ohne weiteres typisierte DataTemplates entwerfen.

Der frühe Apfel fängt den Wurm.

H
523 Beiträge seit 2008
vor 8 Jahren

Aber ein Datenbank-Managerchen scheint mir als Vorlage einer db-basiserten Nutzanwendung komplett ungeeignet

Eine ganze Vorlage wollte ich auch nicht verlinken. In dem Projekt ist alles enthalten was man zum Auslesen und Verarbeiten von Datensätzen aus einer SQLite-Datenbank mittels ADO.NET braucht.

Was ich empfahl, baut auffm Entity-Framework auf, sodass man ein ordentlich typisiertes Datenmodell im Client hat, dagegen man programmieren kann.
Und EF ist halt wohl Stand der Technik.

Da hast Du absolut recht. Ich bin aber auch der Meinung, dass es nicht schaden kann erstmal die Datenbankverarbeitungs-Grundlagen mittels ADO.NET zu lernen, gerade wenn man das noch nie gemacht hat 🙂

Gute Nacht 8)

L
Luksas52 Themenstarter:in
7 Beiträge seit 2015
vor 8 Jahren

Also ich hab mir jetzt die entsprechenden SQLite packages runtergeladen und eingebunden. Eine Datenbank erstellt hab ich auch schon.
Das sich meine Anwendung mit der Datenbank verbindet hab ich auch schon hinbekommen, allerdings versteh ich nicht ganz wie ich den Inhalt der einzelnen Zeilen der Datenbank in beispielsweise ein DataGrid bekomme.
Ich habs schon geschaft per SQLiteCommand und dem entsprechenden Query datensätze hinzuzufügen oder zu ändern, aber nie eine Liste darzustellen...

Kann mir da vlt wer einen Denkanstoß geben?
Ich kann ja schlecht einfach ItemsSource=Datenbank reinschreiben...

5.657 Beiträge seit 2006
vor 8 Jahren

Hi Luksas52,

allerdings versteh ich nicht ganz wie ich den Inhalt der einzelnen Zeilen der Datenbank in beispielsweise ein DataGrid bekomme.

Es ist schon ziemlich naiv, anzunehmen, daß man sich bloß ein paar Dateien downloaden muß, und dann würde alles funktionieren. Es sind doch schon genügend Hinweise auf Artikel gegeben worden, hast du dir die überhaupt schon angeschaut? Hast du mal gegoogelt, ob vielleicht schonmal jemand vor dir ein ähnliches Problem gehabt hat? Ein bißchen Eigeninitiative erwarten wir hier schon, auch im Grundlagen-Forum.

Siehe [Hinweis] Wie poste ich richtig?, Punkt 1, 4, 4.2

Christian

Weeks of programming can save you hours of planning

5.299 Beiträge seit 2008
vor 8 Jahren

Jo, und ich hab ihm doch ein komplettes Sample gegeben - es wird dort allerdings ein ListView verwendet statt eines Datagrids.

Also damit hätte er ja eine recht ordentlich programmierte komplette Wpf-DatenVerarbeitung, die auch läuft.
Aber stattdessen scheint er weiterhin ein Datenbank-Managerchen - was ja - mangels eines zur Designzeit bekanntem Datenmodell - keine richtige Datenverarbeitungund ist, und darüber hinaus geschrieben in WinForms, umbasteln zu wollen auf eine Wpf-DatenVerarbeitung.

Der frühe Apfel fängt den Wurm.

L
Luksas52 Themenstarter:in
7 Beiträge seit 2015
vor 8 Jahren

Hey,
das "Wie postet man richtig" hab ich mir sogar durchgelesen^^
Ich hab in der Tat einige der mir gezeigten Links angeschaut, die waren es ja die mich bis hier hin gebracht haben. Die meisten beziehen sich aber auf Konsolen Anwendungen und bringen mir daher nur bedingt etwas (sehr schöner Einstieg aber eben nicht das was ich suche).

Mein Problem ist das ich nicht weiß wie ich mein DataGrid dazu bekomme die Daten aus der Datenbank zu schlucken und darzustellen.

Das als vielversprechend markierte Tutorial scheitert an den Northwind DataSets den die MSDN Seite auf der das einrichten beschrieben wird ist zwar vorhanden, der Download auf den man verlinkt wird ist allerdings nicht mehr erreichbar.

Somit fehlt mir so ein bischen der Ansatz und ich weiß einfach nicht genug um mir da selbst etwas zu basteln...

EDIT:
Oh sry ich seh grad ich hab die Links vertauscht. Es geht NICHT um den oben erwähnten Link, da muss ich nochmal drüber schauen was genua das war.

EDIT2:
Nachdem ich mir das Projekt nocheinmal angesehen habe weiß ich jetzt wieder wieso ich es nicht verwendet habe: es sagt mir stellenweise gar nichts, ich versteh nur zur hälfte wie es funktioniert und es verwendet keine Datenbankdatei (so wie ich das sehe). Sinn und zweck der ganzen übung hier ist es aber genau eine solche zu verwenden, somit ist das durchaus interessant aber ein wenig an meinem Thema vorbei.
Berichtigt mich bitte fals ich falsch liege, bin noch ein blutiger Anfänger.

5.299 Beiträge seit 2008
vor 8 Jahren

Doch - die verwendete Datenbank-Datei heisst "ContainerContext.sdf".

Generell scheint mir das keine zielführende Strategie, funktionierende, geeignete Lösungen zu ignorieren, weil man sie nicht versteht.
Jedenfalls wenn man auf eine funktionierende, geeignete Lösung aus ist.

Der frühe Apfel fängt den Wurm.

5.657 Beiträge seit 2006
vor 8 Jahren

Nachdem ich mir das Projekt nocheinmal angesehen habe weiß ich jetzt wieder wieso ich es nicht verwendet habe: es sagt mir stellenweise gar nichts, ich versteh nur zur hälfte wie es funktioniert

Nein! Und das, obwohl du dich fast eine ganze Viertelstunde damit beschäftigt hast!

Weeks of programming can save you hours of planning

5.299 Beiträge seit 2008
vor 8 Jahren

Ich glaub beinahe, besser wärs, du würdest nicht gleich mit einer Datenbank anfangen, sondern erstmal eine einfache Datenklasse erstellen, eine ObservableCollection befüllen, ein Viewmodel basteln, und eine Xaml-Oberfläche daran anbinden.
Das sind so Grundlagen der Programmierung, und insbesondere der MVVM-Pattern und das Wpf-Bindungs-System gilt es zu verstehen.
Fehlen dir diese Grundlagen, hast du einfach garkeine Chance, dein Projekt umzusetzen, und dann ist auch logisch, dass das von mir gegebene Sample dir nix bringt.

Der frühe Apfel fängt den Wurm.

L
Luksas52 Themenstarter:in
7 Beiträge seit 2015
vor 8 Jahren

Ich hab mir das Projekt NOCHEINMAL angesehen, ich hab mir da schon stundenlang den Kopf drüber zerbrochen.
Allerdings glaube ich tatsächlich das ich zu schnell zu viel versuche...
Gerade hinsichtlich Databinding hab ich schon nen Anstatz der mein Problem lösen könnte wieder wegen "zu komplex" verworfen.
Das das auf dauer nicht funktioniert ist mir auch klar, somit muss ich dir da recht geben^^