Einzelnen Beitrag anzeigen

guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#1

Datenbankanwendung sauber strukturieren und programmieren

  Alt 3. Nov 2008, 08:54
Datenbank: MSSQL • Zugriff über: ADO
Hallo zusammen,

zunächst eine kleine Warnung: Da ich nicht weiß, wie ich direkt auf den Punkt kommen soll, beginne ich mal mit einer etwas ausführlicheren Einleitung.

Es geht, wie der Titel bereits aussagt, darum, wie man eine Anwendung sauber programmiert, so dass sie übersichtlich und einfach wartbar wird. Ich bin ja kein professioneller Programmierer und habe auch keine entsprechende Ausbildung, aber auch als "Hobbyist" möchte ich versuchen meine Sache so gut wie möglich zu lösen und ich bin mir leider nicht ganz sicher, ob ich mich auf dem richtigen Weg befinde, oder mir das Leben selbst unnötig schwer mache. So beginne ich mal einige Möglichkeiten auf zu listen, die auch weitestgehend dem entsprechen, wie ich bisher vor gegangen bin.

Zunächst noch der Hinweis, dass ich hier von einer DB als SQL-Server spreche, da die Anwendung im Netzwerk und ggf. mit mehreren Benutzern betrieben wird. Die eingesetzte DB ist jetzt mal MSSQL mit ADO, das kann aber auch mal MySQL mit Zeos sein. In der Regel benutze ich keine Komponenten, wie DBGrid o.ä. sondern greife über eine Query auf die DB zu und fülle "normale" Grids und Edits mit den Daten.

1. Die "alles in einem" Lösung: Ein Formular, eine Connection, eine Query. Das wurde sehr schnell sehr unübersichtlich und machte keinen Spaß.

2. Ein globales Datenmodul mit einer Connection und einer Query. Die Anwendung wurde auf mehrere Formulare aufgeteilt, die diese Query verwendeten. Wesentlich übersichtlicher, ich musste allerdings manchmal mehrere Querys verwenden, wenn parallel Daten bereitgestellt werden mussten und hatte die SQL-Anweisungen in der jeweiligen Formularunit. Zudem las ich irgendwann von der Trennung von GUI und Daten, was mich zum nächsten Versuch führte.

3. Globales Datenmodul mit Connection und Query(s), der Zugriff auf die Daten erfolgte jedoch nicht direkt über die Query sondern über extra dafür erstellte Methoden, in der Art wie "First" und "Next". Als Beispiel nenne ich mal "FirstArtikelübersicht", die mit einem Select eine Query öffnet und "NextArtikelübersicht" mit dem ich Datensatz für Datensatz aus der Query auslesen und in die GUI übertragen kann. Sinn war es, bei einer DB-Änderung (z.B. auf MySQL) nur das Datenmodul ändern zu müssen. So richtig befriedigt hat mich das allerdings auch nicht, weil jetzt das Datenmodul ziemlich unübersichtlich geworden ist.

Grundsätzlich bin ich auch nicht so sicher, ob es eine gute Idee ist, die Daten auf diese Weise in Anzeigekomponenten zu kopieren, weil diese ja auch (teilweise) in irgend einer Weise bearbeitet und geändert werden und dementprechend wieder in die DB geschrieben werden müssen.
----

Jetzt stehe ich wieder davor eine kleine Anwendung machen zu wollen und möchte mich gerne verbessern und mir das Leben einfacher machen. Deshalb die Frage:

Wie soll ich das am sinnvollsten angehen?
  Mit Zitat antworten Zitat