Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Versionsstand prüfen (https://www.delphipraxis.net/93546-versionsstand-pruefen.html)

Surrounder 7. Jun 2007 11:21

Datenbank: NexusDB • Version: 2.07 • Zugriff über: Datasource

Versionsstand prüfen
 
Ich beschreibe mal meine Situation um meine Frage zu erklären:

Ich habe für eine neu entwickelte Software eine Datenbank aus einigen Tabellen erstellt die teiweise auch zueinander in Master - Slave Beziehung stehen. Ich habe die Software so an einige Freunde weitergegeben und meistens Fehler in der Software korrigiert. Jetzt hatte ich vor kurzem eine größere Änderung im Sinn und musste deshalb auch weitere Tabellen bzw. Felder in den vorhandenen Tabellen erstellen. In einer Tablle habe ich weil es für mich parktscher was den Datentyp eines Feldes von Integer auf String geändert.

Jetzt habe ich das Problem dass ich wenn ich meine Software starte und auf dem Rechner aber noch die alte Datenbank vorhanden ist, meine Software an beliebigen Stellen natürlich abstürzt weil Tabellen, Felder und Datentypen teiweleise nicht stimmen oder gar nicht vorhanden sind.

Meine Frage ist nun, wie löst ihr denn solch ein Problem? Gibt es eine Möglichkeit so einer Tabelle eine Version zuzuweisen die man auslesen kann? Prüft Ihr ob alle Tabellen, alle Felder und die Feldtypen vorhanden sind und stimmen? Was wenn dies nicht der Fall ist? Legt ihr dann die Felder per Software an?

Danke für Eure Hinweise.

Gruß

Steffen

RWarnecke 7. Jun 2007 11:24

Re: Versionsstand prüfen
 
Ich würde das so machen, wenn ein Datenbanktabellenupdate ansteht, einfach in die Updateprocedure vom Programm ein entsprechendes SQL-Skripit ausführen, welches Deine Tabellen dementsprechend ändert.

hoika 7. Jun 2007 13:16

Re: Versionsstand prüfen
 
Hallo,

das Pürfen, welchen Versionsstand ein Datenbank (nicht Tabelle) hat,
kann man über eine Nummer machen. Die wird bei Änderungen einfach hochgezählt.

Nummer 101: Feld "Name2" in Tabelle "bla" hinzugefügt.
Nummer 102: Datentyp X in Tabelle Y geändert.

Ein Updatescript, siehe mein Vorschreiber prüft die Nummer
und trägt alle nachfolgenden Änderungen ein.

Die Nummer steht sinnigerweise natürlich selber in der Datenbank.


Heiko

Surrounder 7. Jun 2007 21:41

Re: Versionsstand prüfen
 
Zitat:

Zitat von hoika
Hallo,

das Pürfen, welchen Versionsstand ein Datenbank (nicht Tabelle) hat,
kann man über eine Nummer machen. Die wird bei Änderungen einfach hochgezählt.

Nummer 101: Feld "Name2" in Tabelle "bla" hinzugefügt.
Nummer 102: Datentyp X in Tabelle Y geändert.

Ein Updatescript, siehe mein Vorschreiber prüft die Nummer
und trägt alle nachfolgenden Änderungen ein.

Die Nummer steht sinnigerweise natürlich selber in der Datenbank.


Heiko

Du meinst ich soll eine weiteres Feld in der Tabelle definieren in das ich die Versionsnummer jedesmal mit post oder wie ist das gemeint? Oder kann ich der Datenbank bzw. der Tabelle auch eine "globale" Information zuweisen?

Das mit dem Updatescript ist ja ok, das wäre der Weg den ich jetzt momentan gehen würde. Nur um das Updatescript auszuführen muss ich ja vorher erkannt haben dass ich überhaupt ein Update brauche, dazu müsste ich ja jede Tabelle prüfen ob jedes Feld vorhanden ist, und ob der Datentyp stimmt. Das würde ich jetzt momentan so programmieren, meine Frage ist aber eben ob es auch noch einen einfacheren anderern Weg gibt. Mit dem Updatescript stoße ich dann an meine Grenzen wenn ich ein Feld das es schon gibt vom Datentyp her umändere. Oder ist das ein schelchter Programmierstil und ich sollte lieber ein neues Feld mit neuem Namen definieren, das dann den neuen Datentyp enthält und lasse den alten bestehen?

RWarnecke 7. Jun 2007 21:58

Re: Versionsstand prüfen
 
Mache doch eine kleine Tabelle mit dem Namen Update. Dort schreibst Du meinetwegen die Versionsnummer und ein Datum rein. Im UpdateScript legst Du dann eine Versionsnummer und ein Datum fest. Ist beides gleich, dann mache nicht, ist es unterschiedlich, dann führe das Updatescript aus. Dann kannst Du das Feld mit dem Befehl ALTER TABLE umändern.

semo 7. Jun 2007 22:57

Re: Versionsstand prüfen
 
man kann eine extra unit anlegen, meinetwegen update.pas, in der alle updatefunktionen aufgelistet sind.
diese updatefunktionen nummerierst du durch.
in deinem programm führst du eine konstante mit, welche den aktuellen updatestand enthält.
diese sollte man auch irgendwo in der datenbank hinterlegen.
bei jedem start deiner software prüfst du den aktuellen updatestand und ratterst du noch eventuell fehlenden updatefunktionen durch. dann bist du auf stand.

so kannst du auch umfangreiche updates meinetwegen auch über mehrere tabellen ganz easy in einer updatefunktion unterbringen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:29 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