Laden...

Klassen aus bestehender .mdb erstellen und befüllen

Erstellt von tobi45f vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.335 Views
T
tobi45f Themenstarter:in
59 Beiträge seit 2017
vor 4 Jahren
Klassen aus bestehender .mdb erstellen und befüllen

Hallo zusammen,

ich möchte Daten aus einer Access Datenbank lesen. Die bestehende Datenbank hat über 100 Tabellen, von denen für mich ca. 20 relevant sind. Je Tabelle variiert die Anzahl der Attribute von 10 bis 190. Auch nicht alle Attribute brauche ich. Allerdings ist das ein riesiger manueller Aufwand sich bei jeder Tabelle die Attribute rauszusuchen und demnach die Klasse zu erstellen inkl. dem SQL Reader Befehl sowie der Zuordnung beim erstellen der Klasseninstanzen.

Ich hatte mir bereits ein kleines "Tool" geschrieben, dass alle Attribute meiner relevanten Tabellen samt Typ anzeigt. Leider aber funktioniert das nicht so wie ich möchte. Aus einem mir unbekannten Grund haben viele Tabellen Probleme beim lesen und bevor ich jetzt ewig auf Fehlersuche gehe wollte ich mal Fragen, ob es da vielleicht irgendwelche Programme oder sonstiges gibt, die sowas erledigen?

Oder habt ihr sonstige Tipps, wie ich am effizientesten eine solche Tabelle lese und in meine Klassen einsortiere?

Grüße Tobi

16.806 Beiträge seit 2008
vor 4 Jahren

Du bist schneller und besser dran, wenn Du Access dort hin wirfst, wo es aus .NET Entwickler sicht hin gehört: in die Mottenkiste.
Diese Kiste dann verschließt, von einem Felsen wirfst und den Schlüssel einschmilz.

Access ist keine Datenbank und gehörte nie und gehört niemals in keine .NET Applikation - und hatte auch noch nie eine ordentliche Unterstützung; weil es eben keine ordentliche Datenbank ist.
Wenn Du eine In Process Datenbank willst, dann nimm zB Sqlite.

Nimm Dir also 10 Minuten Zeit, migrier Deine Datenbank (Code First Ansatz) - und vergiss Access.

C
2.121 Beiträge seit 2010
vor 4 Jahren

Bevor du das wegwirfst, vielleicht gibt es eine Möglichkeit die Accessdatei in den SqlServer zu importieren oder irgendwie umzuwandeln.
Dann kannst du vernünftig damit arbeiten und dir auch die Spaltennamen auslesen lassen.

Wenn du das selbst schon angefangen hast, vielleicht bist du ja schon fast am Ziel? In den Table Objekten stehen die Spaltennamen drin und die Typen sollten auch irgendwo vermerkt sein.
Brauchst du wirklich für jedes Element eine eigene Klasse oder kannst du direkt mit den Daten aus den Tabellenobjekten arbeiten?

190 Spalten in einer Tabelle halte ic für grenzwertig, da läuft vielleicht was übelst schief. Aber es scheint als hättest du keine andere Wahl als das zu nehmen wie es ist.

F
10.010 Beiträge seit 2004
vor 4 Jahren

Aber sollte das eine Alte SW sein, die gepflegt werden "muss", es gibt für Dapper einen Modelgenerator
https://github.com/ericdc1/Dapper.SimpleCRUD/wiki/T4-Template

T
tobi45f Themenstarter:in
59 Beiträge seit 2017
vor 4 Jahren

Hi,

danke für die Antworten.
Die Sache ist die: Ich habe eigentlich nur Access. Die Datenbank wird von einem Export Programm (GIS) erstellt damit es ein anderes Programm (Netzberechnung elektrischer Netze) verwendet werden kann. Da besagtest Netzberechnungs-Programm von den Funktionitäten einigen Ansprüchen nicht genügt, so bin ich dabei diese Funktionen "hinzuzufügen" indem ich ein Programm schreibe, dass eben per Datenbank-manipulation dies ausführt.

Das Programm selbst kann die Access sogar in sqlite umwandeln. Angeblich ist bei dieser Datenmenge sqlite langsamer als Access. Vom Hersteller hieß es, dass erst ab einer Größe von 500mb der Umstieg auf sqlite lohnt. Aber wenn dem so ist, dass sqlite besser ist, dann werde ich das mal überprüfen.
Parallel dazu schaue ich mir mal den Modelgenerator an! Danke dafür!

16.806 Beiträge seit 2008
vor 4 Jahren

Vom Hersteller hieß es, dass erst ab einer Größe von 500mb der Umstieg auf sqlite lohnt.

Käse.
Klar, wenn man Sqlite scheisse programmiert, dann ist es langsam - wie alles.
Auf dem Papier gehört Sqlite aber überhaupt zu der schnellsten Art und Weise, wie man Daten relational in dieser Art abgelegen kann.