AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Versionsstand prüfen
Thema durchsuchen
Ansicht
Themen-Optionen

Versionsstand prüfen

Ein Thema von Surrounder · begonnen am 7. Jun 2007 · letzter Beitrag vom 7. Jun 2007
Antwort Antwort
Benutzerbild von Surrounder
Surrounder

Registriert seit: 26. Sep 2003
Ort: Stuttgart
177 Beiträge
 
Delphi 2006 Professional
 
#1

Versionsstand prüfen

  Alt 7. Jun 2007, 11:21
Datenbank: NexusDB • Version: 2.07 • Zugriff über: Datasource
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
In C geschrieben und schön war zuletzt Franz Schuberts 9. Symphonie
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#2

Re: Versionsstand prüfen

  Alt 7. Jun 2007, 11:24
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.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Versionsstand prüfen

  Alt 7. Jun 2007, 13:16
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
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Surrounder
Surrounder

Registriert seit: 26. Sep 2003
Ort: Stuttgart
177 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Versionsstand prüfen

  Alt 7. Jun 2007, 21:41
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?
In C geschrieben und schön war zuletzt Franz Schuberts 9. Symphonie
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#5

Re: Versionsstand prüfen

  Alt 7. Jun 2007, 21:58
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.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Versionsstand prüfen

  Alt 7. Jun 2007, 22:57
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.
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:45 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