Autor Beitrag
Flash106
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 234


D7 Ent
BeitragVerfasst: Mo 24.05.04 18:51 
Hi,

ich hab das Forum schon abgegrast aber nichts was mein Problem löst gefunden. Und zwar möchte ich mehrer SQL befehle aufeinmal ausführen. Ich benutze die SQL query von dbExpress, hier das code beispiel:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Button2Click(Sender: TObject);
begin
with SQLQuery1.SQL do begin
  Clear;
  Add ('CREATE DATABASE test');
  Add ('CREATE DATABASE test02');
end;
  SQLQuery1.ExecSQL;
end;


Das Problem is das ich nur einen BEfehl ausführen kann. Füge ich einen zweiten hinzu kommt der Fehler:
...'You have an error in your SQL syntax near 'CREATE DATABASE test02' at line 2'... .
:(.. Warum erhalte ich diesen Fehler denn? Im Forum wurde doch vorgeschlagen das so zumachen..
sowas dummes ... :(

Danke schonmal... Bianca

EDIT: hatte vergessen zu erwähnen das ich MySQL benutze....
FaTaLGuiLLoTiNe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 200
Erhaltene Danke: 5

Windows 7, Windows 8.1
Delphi XE
BeitragVerfasst: Mo 24.05.04 19:05 
[klugscheiss]
Also erstmal kann man das definitiv nicht gleichzeitig machen, sondern nur hintereinander. Echte Gleichzeitigkeit gibt es auf dem PC nämlich nicht. :mahn:
[/klugscheiss]

Ich bin mir im Moment nicht sicher ob man überhaupt mehrere Befehle auf einmal absetzen kann, aber wenn, denn nur mit einem Semikolon dazwischen. Also probier das mal:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Button2Click(Sender: TObject);
begin
with SQLQuery1.SQL do begin
  Clear;
  Add ('CREATE DATABASE test;');
  Add ('CREATE DATABASE test02;');
end;
  SQLQuery1.ExecSQL;
end;


Wenn das nicht geht musst du halt zwischendurch das Query schliessen, neu füllen und ExecSQL nochmal aufrufen.

_________________
<< FaTaLGuiLLoTiNe >>
Rhinoceroses don't play games!
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Mo 24.05.04 19:24 
es geht; aber nur durch die Hintertür;
eine Stored Procedure kann sowas; also createStoredProcedure(ErstelleTabelle erstellen, ZweiteTabelle erstellen), aufrufen und anschließend wieder löschen.
grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
FaTaLGuiLLoTiNe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 200
Erhaltene Danke: 5

Windows 7, Windows 8.1
Delphi XE
BeitragVerfasst: Mo 24.05.04 19:26 
Allerdings können AFAIK nicht alle Datenbanken (z.B. ältere MySQL Versionen) mit StoredProcedures umgehen.

_________________
<< FaTaLGuiLLoTiNe >>
Rhinoceroses don't play games!
Flash106 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 234


D7 Ent
BeitragVerfasst: Mo 24.05.04 19:53 
schon ok =) ... danke.. ich machs doch einzeln... is auch nich sooo das problem =) .. DANKE
Flash106 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 234


D7 Ent
BeitragVerfasst: Mo 24.05.04 20:43 
aaaaahhhhhhhh VERDAAAAAAAAMMT!!! *grummel* .. ok ich mach ja jetz die SQL querys einzeln.. ABER... ich kann ja nichmal ne Tabelle mit mehreren Feldern erstellen.. dann bekommen ich die gleich Fehlermeldung wie schon genannt... KANN DOCH NICH WAHR SEIN!!!! :twisted: ... hilfe?!??!

EDIT: hier der code schnippzel:

ausblenden Quelltext
1:
  mySQLQuery('CREATE TABLE test (name VARCHAR(25), alter INT)');					

mySQLQuery ist eine procedure:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure mySQLQuery(query : string);
begin
  with Form1.SQLQuery1.SQL do begin
    clear;
    Add (query);
  end;
  Form1.SQLQuery1.ExecSQL;
end;
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Di 25.05.04 17:30 
Wie greifst Du denn auf die Datenbank zu? Per BDE? Dann hast Du damit ein Problem, da gehts nämlich auf diesem Weg nicht.

Ich würde Dir vorschlagen die zeoslibs zu verwenden, da gibts ne Kompo ZSQLProcessor, die ganze Scripte ausführen kann.
DannyVapid
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38


Delphi 5 Enterprise
BeitragVerfasst: Do 27.05.04 08:19 
@UGrohne: naja, normalerweise funktioniert das schon einwandfrei per BDE und ODBC sowohl bei MySQL- als auch MSSQL-Datenbanken.

@Flash106: ich vermute mal die Datenbank hat mit Deinem Statement 'CREATE TABLE test (name VARCHAR(25), alter INT)' ein Problem, weil ALTER ein reserviertes Wort in SQL ist.
Nenn das Feld doch testweise mal anders.


Freundliche Grüsse
Danny
Flash106 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 234


D7 Ent
BeitragVerfasst: Mo 31.05.04 20:53 
danke danny.. so hats super funktioniert =)

Bianca
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Di 01.06.04 18:46 
Ach na sowas, das kommt davon, wenn man sich nicht jedes Wort genau anschaut und den Sinn dahinter sucht ;-)