AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Config für DB aus DB selber
Thema durchsuchen
Ansicht
Themen-Optionen

Config für DB aus DB selber

Ein Thema von cltom · begonnen am 8. Sep 2022 · letzter Beitrag vom 8. Sep 2022
Antwort Antwort
Seite 1 von 2  1 2      
cltom

Registriert seit: 22. Sep 2005
221 Beiträge
 
Delphi 12 Athens
 
#1

Config für DB aus DB selber

  Alt 8. Sep 2022, 11:22
Datenbank: SQLite • Version: 3.39.3 • Zugriff über: Zeos
Hallo,

eine konzeptionelle/Stil-Frage: wo legt ihr die für SQL-Zugriffe notwendigen Namen der Tabellen sowie der Felder ab? Denkbar sind wohl:

- hart im Quellcode (wahlweise in einer eigenen Unit, die die Strings führt)
- in einer separaten (Text)Datei, die eingelesen wird

oder auch:

- aus der/einer anderen DB selber?

Spricht da was dagegen: eine Art config-Tabelle mit allen Namen der Felder und einem Index, in welcher Tabelle das Feld zu finden ist. Macht das Sinn? Dann lese ich bei Programmstart einmal die Liste von Tabellen-Namen ein und einmal die Liste von Feldnamen. In der Applikation könnte man das einfach in arrays of string werfen. Klasse lesbar wird es dort dann nicht, weil ein SQl-Statement dann nur noch MyNames[TableIndex, ColumnIndex] enthält und dann nicht mehr im Quellcode leicht sichtbar ist, auf welchen Feldnamen ich zugreife.

Vorteil: es liegt konsequent alles in der DB.
Nachteile: es hat ein wenig "zirkulären" Charakter. Dass man ein Feld dann in der gleichen Datenbank zwei mal ändern muss und das natürlich anfällig ist auf Fehler (Feldnamen geändert aber nicht in der config-Tabelle) - diesen Effekt hat man wohl bei jeder anderen Variante auch.

Danke für Eure Erfahrungen und Sichtweisen!

grüße
thomas

Geändert von cltom ( 8. Sep 2022 um 11:29 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.387 Beiträge
 
Delphi 12 Athens
 
#2

AW: Config für DB aus DB selber

  Alt 8. Sep 2022, 11:35
Moin...
Zitat:
wo legt ihr die für SQL-Zugriffe notwendigen Namen der Tabellen sowie der Felder ab?
Meine SQL liegen als Dateien in einem Ordner im Projekt. Die SQL werden dann als Ressource eincompiliert...fertsch.
Das gilt sowohl für die SQL für das Programm als auch für die DDL SQL für die DB.

Siehe:
https://www.delphipraxis.net/190316-...e-creator.html

[Werbung OFF]
Miniaturansicht angehängter Grafiken
sql.png  

Geändert von haentschman ( 8. Sep 2022 um 11:40 Uhr)
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
221 Beiträge
 
Delphi 12 Athens
 
#3

AW: Config für DB aus DB selber

  Alt 8. Sep 2022, 11:40
Moin...
Zitat:
wo legt ihr die für SQL-Zugriffe notwendigen Namen der Tabellen sowie der Felder ab?
Meine SQL liegen als Dateien in einem Ordner im Projekt. Die SQL werden dann als Ressource eincompiliert...fertsch.
Das gilt sowohl für die SQL für das Programm als auch für die DDL SQL für die DB.

Siehe:
https://www.delphipraxis.net/190316-...e-creator.html

[Werbung OFF]
Danke für die Rückmeldung!! Dh Du definierst die ganzen Statements und legst die separat ab. Du baust erst gar nicht in der Applikation ein SQL-Statement zusammen, wo Du die Tabellen- und Feldnamen brauchst? Hab ich das richtig verstanden?

Das Tool schau ich mir gleich mal an!

Edit: ok, ich seh's schon anhand Deines Tutorials: genau so: da ist gar kein SQL mehr drin. Man bindet das ganze Ding separat ein.

Geändert von cltom ( 8. Sep 2022 um 11:42 Uhr)
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
221 Beiträge
 
Delphi 12 Athens
 
#4

AW: Config für DB aus DB selber

  Alt 8. Sep 2022, 11:49
wobei, doch noch ein Verständnisproblem: wie löst man dann die Zuweisung zu einzelnen Variablen?

Also zB ein

SomeClass.SomeValue := ZQuery.FieldByName('SomeValue').AsInteger; oder auch umgekehrt:

ZQuery.ParamByName('SomeValue').AsInteger := SomeClass.SomeValue;
Wie kommt man da ohne die Namen der Felder aus?
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.387 Beiträge
 
Delphi 12 Athens
 
#5

AW: Config für DB aus DB selber

  Alt 8. Sep 2022, 11:51
Zitat:
Du baust erst gar nicht in der Applikation ein SQL-Statement zusammen
Richtig. Die "Add" Orgien sind Geschichte. Der Vorteil einer Datei ist, daß man sie auch im bevorzugten DB Editor testen kann. (Parameter muß man bei sowas dann selbst setzen )

PS: Im Handbuch sind Delphi Beispiele wie man mit Ressourcen umgeht...

Zitat:
.FieldByName('SomeValue').AsInteger
...da mußt du mit leben.

Oder ein anderes System benutzen (z.B. Aurelius). Kommt auf den Aufwand an.
https://www.tmssoftware.com/site/aurelius.asp
Angehängte Dateien
Dateityp: pdf Handbuch.pdf (821,4 KB, 8x aufgerufen)

Geändert von haentschman ( 8. Sep 2022 um 13:40 Uhr)
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
221 Beiträge
 
Delphi 12 Athens
 
#6

AW: Config für DB aus DB selber

  Alt 8. Sep 2022, 13:20
Danke Dir! Ich schau mir Deine Applikation mal näher an! Prinzip scheint aber mal verstanden.

Zitat:
.FieldByName('SomeValue').AsInteger
...da mußt du mit leben.
Was dann natürlich das ursprüngliche Thema nicht ganz löst, weil ich dann ja erst recht wieder einen Haufen Strings im Quellcode verteilt hab (oder auch in eine separate Unit gepackt). Der Vorteil bleibt natürlich, dass man die SQL-Statements nicht erst zusammenbauen muss und durchtesten, ob sie richtig zusammengebaut sind. Das ist schon ein Vorteil.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.387 Beiträge
 
Delphi 12 Athens
 
#7

AW: Config für DB aus DB selber

  Alt 8. Sep 2022, 13:27
Zitat:
Ich schau mir Deine Applikation mal näher an!
...das geht auch zu Fuß. Die Oberfläche ist darumgebaut...wegen der Übersicht.
https://www.delphipraxis.net/49505-s...einbinden.html

Geändert von haentschman ( 8. Sep 2022 um 13:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#8

AW: Config für DB aus DB selber

  Alt 8. Sep 2022, 14:35
Was dann natürlich das ursprüngliche Thema nicht ganz löst, weil ich dann ja erst recht wieder einen Haufen Strings im Quellcode verteilt hab
Dann nutze halt statische Felder. Damit verlagerst du die Feldnamen zwar nur in die DFM, aber irgendwo müssen sie ja stehen. So hast du sie nicht im Quellcode wenn du das nicht willst.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
491 Beiträge
 
Delphi 12 Athens
 
#9

AW: Config für DB aus DB selber

  Alt 8. Sep 2022, 15:22
Ich habe mir ein kleines Tool geschrieben (verwendet z.B. SynEdit), mit dem man die Scripte erstellt und testen kann.

Weiterhin extrahiert das Tool aus der DB alle Tabellen und deren Feldnamen sowie SPs und Views in eine Include Datei.
Bespiel:
Delphi-Quellcode:
tnTEST = 'TEST';
fnTEID = 'TEID; // INTEGER
fnTENAME =
'TENAME'; // VARCHAR(40)
Diese wird von eine Konstanten Unit eingebunden.

Alle Tabellen fangen mit tn... und alle Felder mit fn... an.
In unserer DB sind die Feldnamen nie doppelt.

Vorteil, man kann sich nicht so leicht mit den Feldnamen vertun, wenn die als Konstanten vorliegen.
Mit dem Tool wird ein Script Datei erstellt, die für jede DB-Version ein Script enthält.
Nach dem Anmelden wird vom 1. User geprüft, ob ein Update nötig und möglich ist.

Die Datenbank hat eine extra Tabelle, welche die Versionsinformationen dafür enthält.
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
221 Beiträge
 
Delphi 12 Athens
 
#10

AW: Config für DB aus DB selber

  Alt 8. Sep 2022, 15:39
Was dann natürlich das ursprüngliche Thema nicht ganz löst, weil ich dann ja erst recht wieder einen Haufen Strings im Quellcode verteilt hab
Dann nutze halt statische Felder. Damit verlagerst du die Feldnamen zwar nur in die DFM, aber irgendwo müssen sie ja stehen. So hast du sie nicht im Quellcode wenn du das nicht willst.
nun, dass ich das nicht will, wär zu viel gesagt. Ich hab mich gefragt, ob es elegantere Lösungen gibt. Mehr auch aus dem Bauchgefühl heraus, dass es bestimmt clevere Varianten gibt, die ich einfach nur nicht am Radar hab.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz