AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird und Tabelle löschen?
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird und Tabelle löschen?

Ein Thema von hronny · begonnen am 5. Jun 2006 · letzter Beitrag vom 6. Jun 2006
Antwort Antwort
Seite 1 von 3  1 23      
hronny

Registriert seit: 4. Mai 2006
Ort: Thüringen
97 Beiträge
 
Delphi 2007 Professional
 
#1

Firebird und Tabelle löschen?

  Alt 5. Jun 2006, 15:12
Datenbank: Embedded Firebird • Version: 1.5 • Zugriff über: Zeos Komponente
Ich versuche schon krampfhaft es hinzubekommen eine Tabelle aus einer Datenbank zu löschen. Klar eigentlich kein Problem, Problem nur ich weis doch nicht ob die Datenbank existiert!? Was bei MySQL prima funktioniert ist einfach
SQL-Code:
DROP TABLE IF EXISTS tabelle;
CREATE TABLE tabelle (...)
Aber den Ausdruck IF EXISTS kennt Firebird nicht. Wenn die Tabelle vorhanden ist, geht es mit DROP TABLE tabelle, aber wenn sie nicht da ist, gibt es einen Fehler. Oder umgekehrt, wenn die Tabelle vorhanden ist und ich mache ein CREATE TABLE dann hat er dazu auch keine Lust, verständlich.
grep -ri shit /usr/src/linux/*
  Mit Zitat antworten Zitat
sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#2

Re: Firebird und Tabelle löschen?

  Alt 5. Jun 2006, 15:27
kann man den fehler nicht irgendwie abfangen?
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Firebird und Tabelle löschen?

  Alt 5. Jun 2006, 15:31
Mittels

select rdb$relation_name from rdb$relations where not (rdb$relation_name like 'RDB$%') kriegst du eine Liste deiner Tabellen in deiner Datenbank. Vielleicht kannst Du damit was anfangen.

Nachtrag:
Besser noch so:
SQL-Code:
if exists (select 1 from RDB$RELATIONS where RDB$RELATION_NAME='DeineTabelle')
then
drop table DeineTabelle;
  Mit Zitat antworten Zitat
hronny

Registriert seit: 4. Mai 2006
Ort: Thüringen
97 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Firebird und Tabelle löschen?

  Alt 5. Jun 2006, 16:13
Nehmen wir mal an meine Tabelle heißt >main<. Dann sieht mein Code so aus:
Delphi-Quellcode:
SQL.Add('if exists (select 1 from RDB$RELATIONS where RDB$RELATION_NAME=''main'') ');
SQL.Add('then ');
SQL.Add('drop table main;');
da gibt es ein >Invalid token<
grep -ri shit /usr/src/linux/*
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Firebird und Tabelle löschen?

  Alt 5. Jun 2006, 17:04
Hi folks.

Anstelle von IF ... DROP TABLE ... CREATE TABLE (...) könntet ihr es auch so machen:

RECREATE TABLE test (...) Das DDL Statement RECREATE ist das Firebird Äquivalent zu dem MYSQL-Code aus Beitrag #1.

Grüße vom marabu
  Mit Zitat antworten Zitat
hronny

Registriert seit: 4. Mai 2006
Ort: Thüringen
97 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Firebird und Tabelle löschen?

  Alt 5. Jun 2006, 17:08
mmh, naja das hier funktioniert Problemlos;
Delphi-Quellcode:
SQL.Add('CREATE TABLE main ('+
  'BOOKNO CHAR(6), '+
  'TITLE CHAR(50) COLLATE ISO8859_1, '+
  'EUROPUB CHAR(50) CHARACTER SET ISO8859_1 COLLATE FR_FR);');
hingegen das mit einer Fehlermeldung; Token unknown - line 1, char 0 RECREATE
Delphi-Quellcode:
SQL.Add('RECREATE TABLE main ('+
  'BOOKNO CHAR(6), '+
  'TITLE CHAR(50) COLLATE ISO8859_1, '+
  'EUROPUB CHAR(50) CHARACTER SET ISO8859_1 COLLATE FR_FR);');
grep -ri shit /usr/src/linux/*
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Firebird und Tabelle löschen?

  Alt 5. Jun 2006, 17:19
Dann gibt es nur zwei Erklärungen: Entweder ich will dir einen Bären aufbinden oder du verwendest einen Parser, der den aktuellen Sprachumfang nicht beherrscht. Was denkst du?

marabu
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Firebird und Tabelle löschen?

  Alt 5. Jun 2006, 17:28
Hallo marabu,

ich schließe mal die Bärenversion aus. Die Frage aber bleibt, an was es liegt. Prüft die Zeos Komponente vorher tatsächlich den SQL String? Wahrscheinlich doch nicht, oder? Ist die embedded Version von FB eingeschränkt? Auch hier: wohl eher nicht. Wer also erzeugt die Fehlermeldung?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Firebird und Tabelle löschen?

  Alt 5. Jun 2006, 17:43
Hallo Albert,

ältere Versionen von IBExpert (z.B. Version 2.5) hatten Probleme mit dem RECREATE Statement und lieferten genau diese Fehlermeldung - wenn ich mich richtig erinnere. SQL.Add() in Verbindung mit ZEOS macht auch mich stutzig - jetzt wo du es geschrieben hast.

marabu
  Mit Zitat antworten Zitat
hronny

Registriert seit: 4. Mai 2006
Ort: Thüringen
97 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Firebird und Tabelle löschen?

  Alt 5. Jun 2006, 17:53
Hab es auch mit SQL.Text:='RECREATE ...' versucht, bleibt aber das gleiche. Die Komponente hab ich von hier geladen: Download
grep -ri shit /usr/src/linux/*
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 13: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