AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi 2 sqlstr's gleichzeitig ausführen
Thema durchsuchen
Ansicht
Themen-Optionen

2 sqlstr's gleichzeitig ausführen

Ein Thema von ciinderella · begonnen am 24. Apr 2010 · letzter Beitrag vom 10. Mai 2010
Antwort Antwort
ciinderella

Registriert seit: 28. Feb 2010
2 Beiträge
 
#1

2 sqlstr's gleichzeitig ausführen

  Alt 24. Apr 2010, 16:54
Datenbank: MySQL • Zugriff über: ADO
Hey.

Ich möchte gerne 2 sqlstr's gleichzeitig ausführen.
Weiß jedoch nicht, wie das geht. Im Anhang mein Beispiel.

SQL-Code:
  Form2.ADOQuery1.Close;
  Form2.ADOQuery1.SQL.Clear;
  
  sqlstr1 := 'INSERT INTO Zubehoer (Zubehoerbezeichnung) VALUES ("' + ed_zubehoer.text + '")';
  
  sqlstr2 := 'INSERT INTO Kombinationen (K_ZID, K_AID, K_Preis) VALUES (' + inttostr(ZubehoerIndex) + ', ' + inttostr(AutoIndex) + ', ' + ed_Preis.Text + ')';
 
  Form2.ADOQuery1.SQL.Add(..?..);
  Form2.ADOQuery1.ExecSQL;
Vielen Dank!

ciinderella
Liebe Grüße
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#2

Re: 2 sqlstr's gleichzeitig ausführen

  Alt 24. Apr 2010, 17:35
Du kannst nicht 2 SQL-Aktionen gleichzeitig ausführen lassen. Das DBMS macht daraus ja auch zwei nacheinander ausgeführte Aktionen. Du kannst aber mittels "LOCK TABLES" die entsprechenden Tabellen vor Veränderungen von außen schützen, sodass es für "außenstehende" so aussieht, als würdest du 2 Aktionen gleichzeitig ausführen. Dabei aber bitte nicht vergessen mit "UNLOCK TABLES" die Sperre wieder aufzuheben, denn die Sperre bleibt solange aktiv, solange dein Programm die Verbindung zur datenbank aufrecht erhält.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
hoika

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

Re: 2 sqlstr's gleichzeitig ausführen

  Alt 27. Apr 2010, 06:57
Hallo,
Delphi-Quellcode:
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
 
  sqlstr1 := 'INSERT INTO Zubehoer (Zubehoerbezeichnung) VALUES ("' + ed_zubehoer.text + '")';
 
  sqlstr2 := 'INSERT INTO Kombinationen (K_ZID, K_AID, K_Preis) VALUES (' + inttostr(ZubehoerIndex) + ', ' + inttostr(AutoIndex) + ', ' + ed_Preis.Text + ')';

  ADOQuery1.SQL.Add(sqlstr1);
  ADOQuery1.ExecSQL;

  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add(sqlstr2);
  ADOQuery1.ExecSQL;

Heiko
Heiko
  Mit Zitat antworten Zitat
onkelthom

Registriert seit: 5. Mär 2009
Ort: Schwalmtal
16 Beiträge
 
#4

Re: 2 sqlstr's gleichzeitig ausführen

  Alt 10. Mai 2010, 14:15
Hallo zusammen,

ich möchte so etwas ähnliches machen, allerdings habe ich mein SQL nicht im Source liegen, sondern in einer Datei ausgelagert.
Auf diese Weise möchte ich über meinen Client DB-Updates steuern können.
So weit funktioniert das auch, nur sobald ich mehr als 1 Statement rein packe, will er nicht mehr und meckert den ersten Befehl nach dem ersten ; an. (create, alter, drop,... kennt er dann alles nicht mehr)
Ein Commit hat mir da auch noch nicht weiter geholfen.

hat jemand ne Idee, wie ich n Statements abschießen kann ?

Firebird 2.1 / verwendete Komponente TIB_DSQL

Delphi-Quellcode:
  with IB_DSQL1 do
  begin
    SQL.Text := Memo1.Text;
    Prepare;
    ExecSQL;
  end;
Viele Grüße
Thomas
Nicht reden - Machen ! Geht nicht gibt´s nicht...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: 2 sqlstr's gleichzeitig ausführen

  Alt 10. Mai 2010, 14:25
Ein Query kann auch nur einen Befehl.

Für mehrere benötigst du ein ADOCommand
Markus Kinzler
  Mit Zitat antworten Zitat
AlBo55

Registriert seit: 17. Jan 2008
Ort: Lieblingshof
30 Beiträge
 
Delphi XE7 Enterprise
 
#6

Re: 2 sqlstr's gleichzeitig ausführen

  Alt 10. Mai 2010, 14:55
@ onkelthom
für Firebird gibt es IBScript ich vermute das suchst du
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

Re: 2 sqlstr's gleichzeitig ausführen

  Alt 10. Mai 2010, 15:18
Mal so allgemein gefragt:

Für mich sieht das so aus, als wird hier nach Transaktionen gesucht.
Weil dann verhalten sich die SQL-Statements nach außen wie ein Statement.
(konsistenter Datenbestand)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: 2 sqlstr's gleichzeitig ausführen

  Alt 10. Mai 2010, 16:03
Wenn man eine Liste mit SQL-Befehlen hat, die alle durch einen Strichpunkt abgeschlossen werden,
dann muss man die Liste zunächst in einzelne Befehle zerlegen und dann auch einzeln mit ExecSQL() ausführen.

Ich hänge mal eine Klasse an, die das Zerlegen in der SQL-Befehle vornimmt.
Die SQL-Befehle dürfen natürlich keine Parameter haben und SELECT ist auch nicht sinnvoll.
Sinnvolle SQL-Befehlen wären INSERT INTO, UPDATE, DELETE, CREATE TABLE, ALTER TABLE, DROP TABLE,...
Angehängte Dateien
Dateityp: pas sqlbatchtools_139.pas (2,9 KB, 1x aufgerufen)
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#9

Re: 2 sqlstr's gleichzeitig ausführen

  Alt 10. Mai 2010, 16:13
Zitat von Sir Rufo:
Mal so allgemein gefragt:

Für mich sieht das so aus, als wird hier nach Transaktionen gesucht.
Weil dann verhalten sich die SQL-Statements nach außen wie ein Statement.
(konsistenter Datenbestand)
right
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  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 18: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