AGB  ·  Datenschutz  ·  Impressum  







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

Prüfen ob Tabelle existiert

Ein Thema von fanavity · begonnen am 13. Sep 2011 · letzter Beitrag vom 13. Sep 2011
Antwort Antwort
Seite 1 von 3  1 23      
fanavity

Registriert seit: 2. Sep 2011
65 Beiträge
 
#1

Prüfen ob Tabelle existiert

  Alt 13. Sep 2011, 15:22
Datenbank: MSSQL • Version: 2008 • Zugriff über: BDE/ODBC
Hallo,

wie genau kann ich prüfen ob eine Tabelle existiert? Wenn ich dem Query1 eine Variable zuweise und diese anschließend prüfen will, passiert rein garnichts..

Delphi-Quellcode:
Query1.close;
     Query1.sql.clear;
     test2 := Query1.sql.add('SELECT COUNT( * ) FROM sysobjects WHERE name = "'+tabelle+'"');
     Query1.Open;
     showmessage(IntToSTr(test2));
Der gibt mir kein fenster aus... Denn ich will, bevor ich die tabelle beschreibe prüfen ob sie vorhanden ist.. Denn folgendes klappt irgendwie nicht:

Delphi-Quellcode:
Query1.sql.add('IF EXISTS (SELECT * FROM dbo.SYSOBJECTS WHERE name="'+tabelle+'")');
          Query1.sql.add('INSERT INTO '+tabelle+' (ID, test, test2, test3, test4)');
          Query1.sql.add('VALUES (:id, :test, :test2, :test3, :test4)');
Hat da jemand vielleicht eine Idee?

Denn wenn Fall eins klappen würde, könnte ich in Delphi ne einfache If-Abfrage machen und ggf die Tabelle befüllen oder ne MSG-Box ausgeben das sie erst erstellt werden muss..

PS: Bei der Variante eins gibt er mir immer eine Fehlermeldung: Query1: Das Feld 'id' wurde nicht gefunden

Geändert von fanavity (13. Sep 2011 um 15:25 Uhr)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#2

AW: Prüfen ob Tabelle existiert

  Alt 13. Sep 2011, 15:29
sowas vllt.:

Delphi-Quellcode:
function table_exists(tabelle:String):Boolean
//...
Query1.sql.clear;
Query1.sql.add('SELECT COUNT( * ) FROM sysobjects WHERE name = "'+tabelle+'"');
Query1.Open;
Result:=Query1.Active and (Query1.RecordCount>0);
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Prüfen ob Tabelle existiert

  Alt 13. Sep 2011, 15:32
Was enthält wohl der RecordCount bei einer Aggregatabfrage wie COUNT?
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
fanavity

Registriert seit: 2. Sep 2011
65 Beiträge
 
#4

AW: Prüfen ob Tabelle existiert

  Alt 13. Sep 2011, 15:33
FUnktioniert leider auch nicht

Hat sonst noch jemand eine Idee?
  Mit Zitat antworten Zitat
FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#5

AW: Prüfen ob Tabelle existiert

  Alt 13. Sep 2011, 15:35
Das macht das Programm aber ganz schon abhängig von dem verwendeten RDBMS.

Deine ADOConnection kennt alle Tabellen:

Delphi-Quellcode:
MyADOConnection.GetTableNames(myStringList);
If myStringList.IndexOf('MyTable')=-1 then
  ShowMessage('Tabelle nicht vorhanden');
Das Bild hängt schief.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Prüfen ob Tabelle existiert

  Alt 13. Sep 2011, 15:36
Wie wäre es mit Delphi-Referenz durchsuchenGetTableNames und dann nachsehen, ob die entsprechende Tabelle in der Liste enthalten ist?

[edit] Wo war der rote Kasten? [/edit]
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
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#7

AW: Prüfen ob Tabelle existiert

  Alt 13. Sep 2011, 15:39
Was enthält wohl der RecordCount bei einer Aggregatabfrage wie COUNT?
OhOh. Slopy and Haste Error:
Code:
Query1.sql.add('SELECT * FROM sysobjects WHERE name = "'+tabelle+'"');
war gemeint
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#8

AW: Prüfen ob Tabelle existiert

  Alt 13. Sep 2011, 15:41
Delphi-Quellcode:
Query1.close;
     Query1.sql.clear;
     test2 := Query1.sql.add('SELECT COUNT( * ) FROM sysobjects WHERE name = "'+tabelle+'"');
     Query1.Open;
     showmessage(IntToSTr(test2));
Yeah! SQL Injection for the win!
Code:
tabelle := tabelle + '; DROP TABLE ' + tabelle + ';'
Mal im ernst: Wer SQL Statements unparametrisiert mit strings zusammenbaut frisst auch kleine Kinder
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
fanavity

Registriert seit: 2. Sep 2011
65 Beiträge
 
#9

AW: Prüfen ob Tabelle existiert

  Alt 13. Sep 2011, 15:42
Er kennt GetTableNames nicht.. Gibt es das in Delphi 5 schon? Und ich benutze nur die Database,Datasource und Query Komponente sowie das DBGrid von Delphi 5..
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Prüfen ob Tabelle existiert

  Alt 13. Sep 2011, 15:44
Hast Du mal auf meinen Link geklickt? Da steht, wo es alles GetTableNames gibt, in Deiner Auflistung ist da auch etwas dabei.
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
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 09:42 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