Laden...

Best Practice: Daten von SQL-Table ins DGV bringen

Erstellt von Ruzbacky vor 2 Jahren Letzter Beitrag vor 2 Jahren 300 Views
R
Ruzbacky Themenstarter:in
2 Beiträge seit 2021
vor 2 Jahren
Best Practice: Daten von SQL-Table ins DGV bringen

Verwendetes Datenbanksystem: MSSQL

Hallo zusammen,

ich möchte Daten aus einer SQL-Datenbank abrufen und diese in einem DGV anzeigen lassen.
Später möchte ich auch Datensätze über einen eigenen Dialog anlegen und bearbeiten.

Bei meiner Recherche ergeben sich für mich zwei grundlegende Methoden (wahrscheinlich gibt es noch viele weitere) um die Daten aus der Datenbank abzurufen und diese in DGV zu bringen.

Möglichkeit 1:
Ich erstelle ein DataSet und in diesem einen TableAdapter, mit welchem ich im Konfigurator des TableAdapters schon die Verbindung zur Datenbank zur Entwicklungszeit herstelle und somit auch die Spalten meiner Abfrage erhalte.

Möglichkeit 2:
Ich schreibe den entsprechenden Code und stelle so die Verbindung zur Datenbank erstmalig zur Laufzeit her und bringe so die Daten ins DGV.

bei den beiden Möglichkeiten ergeben sich für mich auf den ersten Blick folgende Vor-, bzw. Nachteile:
Bei Möglichkeit 1:

  • Ich habe ein typisiertes DataSet und kann somit das Ergebnis meiner Datenbankabfrage typisiert im Code verarbeiten
  • Ich gebe dem TableAdapter schon über den Konfigurator die Verbindung zur Datenbank und kann diese später zur Laufzeit nicht beeinflussen (beispielsweise IP-Adresse vom SQL-Server ändert sich)

Bei Möglichkeit 2:

  • Ich kann im Code beispielsweise dem ConnectionStringBuilder zur Laufzeit Verbindungsinformationen mitgeben
  • Ich bin gezwungen untypisiert in der Datenbank herumzustochern

Ich denke es wird klar, das ich Einsteiger im Bereich Zugriff auf Datenbanken bin und eigentlich nach einer Lösung suche, um von Beginn an auf dem richtigen Pfad loszulegen.
Ich möchte es vermeiden mich völlig in eine Richtung zu verrennen, welche sich später als die Pechvogelvariante herausstellt.

3.825 Beiträge seit 2006
vor 2 Jahren

Hallo Ruzbacky,

ich verstehe den Unterschied deiner 2 Möglichkeiten nicht so ganz.

Typisierte DataSets nimmt man nicht mehr.

Am besten lässt Du das Mapping jemand machen, z.B. ein ORM oder Micro ORM.

Den Connectionstring hinlegst Du natürlich so dass er vom Benutzer geändert werden kann.

Schau mal hier : https://download.seven-c.de/files/DatenbankenHowTo.htm

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

16.827 Beiträge seit 2008
vor 2 Jahren

Es gibt nicht nur den einen Weg, daher kann man Dich nicht generell von der Pechvogel-Variante schützen.
Viele Wege haben ihre Berechtigung, auch wenn sie ähnliches tun.

Ein DataSet bzw. wirst Du in einer größeren, performanteren Lösung nicht mehr finden, weil es unpraktikabel dafür ist.
In einem Mini-Tool wird man ein DataSet aber finden, weil es convenient ist.

Eine Software ist keine chinesische Mauer; sie bleibt nie, wie sie ist.
Man beginnt oft mit etwas, um schnell eine Lösung zu haben und erweitert dann nach Anforderung.

R
Ruzbacky Themenstarter:in
2 Beiträge seit 2021
vor 2 Jahren

Vielen Dank für die Antworten.

Sie lösen zwar nicht mein Problem, aber haben mir in Summe den Anstoß gegeben in welche Richtung ich mich orientieren sollte.
Insbesondere der Link von Bernd war aufschlussreich.

Es fühlte sich einfach falsch an, ohne typisiertes DataSet mittels T-SQL wahllos in der Datenbank rumzustochern.

Das wahllose Rumstochern ist mit Anwendung des Entity Frameworks, ORM und EDM natürlich nicht notwendig, da alles schön gemappt wird.

Ich kannte das Entity Framework vom Namen, wusste bislang jedoch nicht was dieses beinhaltet und wofür es genutzt wird.
Jetzt weiß ich, was und wo ich lesen muss, um mich mit der Materie auseinander zu setzten.

T
2.222 Beiträge seit 2008
vor 2 Jahren

@Ruzbacky

Es fühlte sich einfach falsch an, ohne typisiertes DataSet mittels T-SQL wahllos in der Datenbank rumzustochern.

Was genau meinst du damit?
Ohne DataSet lässt sich auch typisiert arbeiten.
Schau dir mal an wozu der DataReader da ist und welche Methoden er dir bietet.
Das Mapping von Daten aus der Datenbank auf Objekte ist in .NET über ADO .NET gang und gebe.
Was anderes macht Entity Framework intern auch nicht als über entsprechende Reader die Daten zu mappen.
Dazu solltest du dir ADO .NET nochmal anschauen um zu verstehen, wie man ohne DataTable/DataSet arbeiten kann.
HowTos und Tutorials gibt es dafür wie Sand am Meer.
Auch die .NET Doku zu dem Thema ist gut beschrieben.

Schau dir am besten die Entity Framework Doku an und verinnere dir erst mal was ein OR Mapper im Kern ist.
Mit .NET 5 und Entity Framework 5 hast du eine gute Basis und kannst die recht viele Grundlagen wie Verbindungsaufbau, Command anlegen und ausführen vereinfachen bzw. durch den Code First Ansatz einsparen.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.