AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Überprüfen ob Spalte existiert
Thema durchsuchen
Ansicht
Themen-Optionen

Überprüfen ob Spalte existiert

Ein Thema von xZise · begonnen am 29. Mai 2009 · letzter Beitrag vom 31. Mai 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

Überprüfen ob Spalte existiert

  Alt 29. Mai 2009, 22:19
Datenbank: SQLite • Zugriff über: SQLite DB Delphi Wrapper
Hallo ihr,

ich benutze den SQLite Delphi Wrapper um mit Delphi auf eine SQLite Datenbank zugreifen. Nun dachte ich, da wir drei Datenbanken mit ähnlichen Layouts verwenden, dass ich sie automatisch portiere. Dazu muss ich aber es irgendwie hinkriegen zu testen, ob eine Spalte existiert.

Zuerst dachte ich ich mach es mithilfe eines SQL-Zugriffes, und wenn die SpaltenAnzahl nicht so groß ist, wie da Anzahl der geforderten, dann existiert diese Spalte nicht. Das Problem ist, aber das er intern nun bereits einen Fehler hervorruft, dass er nicht auf bestimmte Spalten zugreifen konnte

Wie würdet ihr jetzt an das Problem gehen? Ich könnte natürlich den Fehler abfangen, aber ich wollte ja gerade das verhindern

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Überprüfen ob Spalte existiert

  Alt 29. Mai 2009, 22:35
Ich weiß ja nicht, ob das auch bei SQLite geht, aber es sollte so gehen:SHOW COLUMNS FROM tabellenname WHERE Field=... Und dann einfach schauen, ob ein Ergebnis gefunden wurde, also die Anzahl > 0 ist.
http://dev.mysql.com/doc/refman/5.1/...mns-table.html
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Überprüfen ob Spalte existiert

  Alt 30. Mai 2009, 01:11
Naja das war ja sogut wie meine vorgehensweise (bis auf dem Umstand das du mit SHOW und ich mit SELECT gearbeitet habe). Und auf den Ersten Blick unterstützt SQLite kein SHOW.

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Überprüfen ob Spalte existiert

  Alt 30. Mai 2009, 01:16
Zitat von xZise:
Naja das war ja sogut wie meine vorgehensweise
Dann verstehe ich grad nicht so ganz wo bei dir der Fehler kommt, weil mit SHOW kommt ja gerade kein Fehler, sondern es wird nur zurückgegeben, dass keine oder eine Spalte so heißt.

Aber wenn das bei SQLite ohnehin nicht geht, hat sich das ja erledigt.

Mit der unten auf der verlinkten SELECT-Abfrage sollte es aber auch gehen, vielleicht geht das ja.
Und wie hast du es denn jetzt gemacht, dass da ein Fehler kommt?
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Überprüfen ob Spalte existiert

  Alt 30. Mai 2009, 13:14
Also ich habe es im Moment einfach mit "SELECT <Gesuchte Spalte> FROM <Tabelle>" und da kam dann auch der Fehler.

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Überprüfen ob Spalte existiert

  Alt 30. Mai 2009, 16:50
Ja, ok, das ist ja auch etwas vollkommen anderes als das was ich mache...

Ich frage ja nur die Spalteninformationen ab und versuche nicht den Inhalt der Spalte aus der Tabelle auszulesen. Dass bei diesem Zugriff bei dir ein Fehler kommt, ist ja klar.

Du kannst es ja wie gesagt mit einem SELECT auf die Tabelleninformationen versuchen wie es auf der verlinkten Seite noch steht, wenn SQLite SHOW nicht unterstützt.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
hoika

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

Re: Überprüfen ob Spalte existiert

  Alt 30. Mai 2009, 17:00
Hallo,

ich mache das so

Select * From Table1 Where Id=0 Dann Open / Clsoe und per Schleife prüfen
for i:= 0 to Fields.Count-1


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Überprüfen ob Spalte existiert

  Alt 30. Mai 2009, 17:02
Statt die eine bestimmte Id abzufragen kann auch einfach die Anzahl der Ergebnisse mittels LIMIT auf 1 gesetzt werden, so dass der Inhalt für die Abfrage egal ist.

Problem evtl.: Es muss mindestens eine Zeile vorhanden sein, sonst wird das wohl nicht klappen, oder?
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#9

Re: Überprüfen ob Spalte existiert

  Alt 30. Mai 2009, 18:41
LIMIT ist MySQL-spezifisch, genauso wie SHOW FIELDS und dergleichen. Da muss halt mal die Dokumentation des DBMS bemüht werden, ob es etwas ähnliches gibt, oder eine universelle Abfrage wie die von Heiko auf die Tabelle losgelassen werden.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#10

Re: Überprüfen ob Spalte existiert

  Alt 30. Mai 2009, 18:57
Zitat von hoika:
[...]Dann Open / Clsoe und per Schleife prüfen
for i:= 0 to Fields.Count-1[...]
Was genau ist das Open/Close?

Zitat von jaenicke:
Statt die eine bestimmte Id abzufragen kann auch einfach die Anzahl der Ergebnisse mittels LIMIT auf 1 gesetzt werden, so dass der Inhalt für die Abfrage egal ist.

Problem evtl.: Es muss mindestens eine Zeile vorhanden sein, sonst wird das wohl nicht klappen, oder?
Alternativ (wenn es auch geht, wenn keine Zeile vorhanden ist), könnte ich auch ROWID nehmen.

Zitat von jaenicke:
[...]Du kannst es ja wie gesagt mit einem SELECT auf die Tabelleninformationen versuchen wie es auf der verlinkten Seite noch steht, wenn SQLite SHOW nicht unterstützt.
Naja okay dann werde ich das mal überprüfen.

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  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 21: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