Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Best Practice: Daten von SQL-Table ins DGV bringen
Ruzbacky
myCSharp.de - Member



Dabei seit:
Beiträge: 2

Themenstarter:

Best Practice: Daten von SQL-Table ins DGV bringen

beantworten | zitieren | melden

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.


private Nachricht | Beiträge des Benutzers
BerndFfm
myCSharp.de - Team

Avatar #gvp27cjXxMEZQuCpk4WQ.jpg


Dabei seit:
Beiträge: 3737
Herkunft: Frankfurt a.M.

beantworten | zitieren | melden


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
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15708
Herkunft: BW

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Ruzbacky
myCSharp.de - Member



Dabei seit:
Beiträge: 2

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1821
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

@Ruzbacky
Zitat
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.
private Nachricht | Beiträge des Benutzers