Zum Inhalt springen

OOP gerechter Datenbankzugriff mit C#


Reverent

Empfohlene Beiträge

Hallo Leute,

ich bin neu hier und ich soll eine Kundenverwaltung realisieren.

Ich hoffe Ihr da draußen könnt mir helfen!

Ich weiß welche Daten zu verwalten sind, ich benutze den MS SQL Server 2005 und VS2005. Jetz habe ich mir mal ein paar Gedanken über die OOP gemacht.

Und zwar, mein Problem ist jetzt, wie bekomme ich die Daten Objektorientiert in das Formular und wieder zurück?

1. das Kundenformular (Kunden anlegen, löschen u.s.w.) soll ein Usercontroll werden, da ich es dann später noch für andere Programmen verwenden kann.

2. Die Logik des UserControl's verlege ich in die Klasse 'Verwaltung'

Mit anderen Worten:

Wo dann Funktionen wie 'Daten Laden', 'Daten Anlegen', 'Daten Ändern' und 'Daten Löschen' aufgerufen werden..

3. eine Klasse die den Datenzugriff regelt

damit meine ich z.B. das diese Klasse Funktionen enthält wie 'void SelectData(string SQL)' u.s.w.

Frage zu Punkt 3:"Ist in der Klasse auch das DataSet enthalten in dem die Kundendaten gespeichert werden?"

Ich bitte um Denkanstöße für ein einen OOP gerechten Lösungsweg ich möchte kein Code sondern nur wie man so was anpackt!

Das alles so 0815 zuschreiben ist kein Problem, aber das alles OOP gerecht zumachen!!

Eine andere Überlegung von mir war, es doch 0815 zumachen und dann die Funktionen auslagern!

Bis Dann

Markus

Link zu diesem Kommentar
Auf anderen Seiten teilen

Normaler weise mache ich eine klasse mit der ich auf die DatenBank zugreife.

Also einfach eine mssql-Klasse mit methoden wie GetUser() etc.

Oder du baust dir selbst einen Adapter, der über reflection die Klassen anhand von tables füllt. Die eleganteste lösung meiner meinung nach.

Aber ich habe gelesen das man mit VS05 einen Adapter hat, dor muss man über eine XML datei angeben welche properties eine klasse zu welchen tabellen feldern gehören, und kann sich die dann füllen lassen. Habe damit aber noch nicht gearbeitet.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Leute,

ich habe jetzt mal verschiedene Sachen durchgespiel.

Und meine Entscheidung ist das ich die Kunden doch auf einem SQL Server speichere.

Ich benutze den Microsoft SQL Server 2005 Express.

Und so möchte ich die Sache aufbauen:

1. ein UserControl in dem die Daten dargestellt werden

2. eine Klasse, die die Logik des UC enthält

3. eine Klasse die den Datenzugriff regelt und in Ihr ist auch das DataSet, was die Kundendaten enthält.

Ich habe in dem UC ein DataGridView, wenn ich nun die Verbindung zur Datenbank mit dem Assistenten erstelle klappt alles wunderbar.

Er erstellt mir ein passendes DataSet, eine BindingSource und ein TableAdapter.

Und wenn ich nun in dem Load Ereigniss noch die Zeile:


TableAdaper.Fill(DataSet.Tabelle);

einfüge und die Anwendung starte, OH Wunder sehe ich meine Daten.

Nur halt alles in den UC und nicht in der Klasse für den Datenzugriff.

Meine Frage:"Muß ich den Code den der Assistent erzeugt alles in meine Klasse umschreiben?"

Ich bedanke mich schon mal für Eure Hilfe!

Bis Dann

Markus

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nur halt alles in den UC und nicht in der Klasse für den Datenzugriff.

Meine Frage:"Muß ich den Code den der Assistent erzeugt alles in meine Klasse umschreiben?"

Wenn Du mit dem Code des Assitenten nicht zufrieden bist, musst Du ihn natürlich umschreiben/selbst neu schreiben. Du kannst Dich aber ja an ihm orientieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Bubble,

danke für Diene Hilfe, ich hatte mir so was schon gedacht.

Ich habe in dem UC ein DataGridView, wenn ich nun die Verbindung zurDatenbank mit dem Assistenten erstelle klappt alles wunderbar.

Er erstellt mir ein passendes DataSet, eine BindingSource und ein TableAdapter.

Und wenn ich nun in dem Load Ereigniss noch die Zeile:

TableAdaper.Fill(DataSet.Tabelle);  

einfüge und die Anwendung starte, OH Wunder sehe ich meine Daten.

Nur halt alles in dem UC und nicht in der Klasse für den Datenzugriff.

Da muß ich wohl oder übel den Code, den der Assistent erzeugt in meine Klasse umschreiben!!

Und das bringt mich zu meinem nächsten Problem:

Was ist ,wenn an der Datenbank mal was geändert wird, dann muß ich ja den ganzen Code anpassen, z.B. die Spalten in der DataGridView und so weiter!

Ich habe mir überlegt um das zu umgehn, erstelle ich eine XML Schema Datei, die ich einlese.

Wenn jetzt Änderungen an der Datenbank gemacht werden, müßen diese nur in der XML Datei auch gemacht werden und das Programm läuft dann schon wieder, oder?

Bis Dann

Markus

Ich bedanke mich schon mal für Eure Hilfe!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Und das bringt mich zu meinem nächsten Problem:

Was ist ,wenn an der Datenbank mal was geändert wird, dann muß ich ja den ganzen Code anpassen, z.B. die Spalten in der DataGridView und so weiter!

Im Prinzip ja, aber normalerweise weiss man schon sehr genau, welche Spalten aus welchen Tabellen man benötigt und übernimmt die Tabellen nicht unbedingt 1:1. Ich nehme an, Du hast ohnehin eine spezielle Eingabemaske und möchtest nicht beliebige Tabellen zum Bearbeiten öffnen.

Ich habe mir überlegt um das zu umgehn, erstelle ich eine XML Schema Datei, die ich einlese.

Wenn jetzt Änderungen an der Datenbank gemacht werden, müßen diese nur in der XML Datei auch gemacht werden und das Programm läuft dann schon wieder, oder?

Du kannst ein XML-Schema erstellen. VS kann Dir dann damit automatisch eine neue angepasste DataSet-Klasse erstellen, was Dir die Handarbeit an dieser Stelle abnimmt. Allerdings: Du brauchst immer das Tool, um aus dem Schema eine neue von DataSet abgeleitete Klasse zu erstellen und wenn sich an dieser Klasse Änderungen ergeben, dann musst Du Deinen übrigen Code trotzdem per Hand anpassen. Ganz ohne eigene Arbeit geht es halt doch nicht ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...