AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Daten mit SQLDataSet in mysql-Datenbank schreiben
Thema durchsuchen
Ansicht
Themen-Optionen

Daten mit SQLDataSet in mysql-Datenbank schreiben

Ein Thema von AnfängerDelphi · begonnen am 29. Mär 2017 · letzter Beitrag vom 6. Apr 2017
Antwort Antwort
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#1

AW: Daten mit SQLDataSet in mysql-Datenbank schreiben

  Alt 3. Apr 2017, 06:22
Also ich kann mir nicht vorstellen, dass eine For Schleife oder irgendeinanderes Konstrukt in Delphi die Verarbeitung 2er Insert Statements unmöglich macht.
Kann es sein, dass irgendetwas Deiner vorigen Versuche noch etwas "Rauschen" im Delphicode hinterlassen hat und zu dem Problem führt.
Also z.B. ganz banal. 2. Insert wird nicht gegen Deine neue, sondern gegen die OriginalDB gefahren?

Kläre das mal, hier gibt es sicher irgendeine Sache, die Du übersiehst.

Für Dein Problem ist der Einsatz einer SP wahrscheinlich nicht notwendig. Du hast kein Werte oder Transaktionsproblem, sondern ein falsches SQL oder eine falsche DB in Folge fehlerhafter Delphiprogrammierung oder sowas.

Falls Du es per SP machen willst, zu anonymen Blöcken und SP:
In einem anonymen Block würdest Du den gesamten SQL Code tatsächlich in einer CommandText Eigenschaft oder so an die DB schicken. IdR wird ein anonymer Block durch irgendwas geklammert, Begin End; .. naja bei MySQL ist das vergebene Liebesmüh

Eine SP hat einen Aufbau wie ein Anonymer Block, liegt aber auf der DB selbst und hat einen Namen und Parameter. Letztlich sieht der Code einer Delphi Procedure sehr ähnlich. (Natürlich nicht exakt auf Syntaxebene).
Deine CommandEigenschaft sieht dadurch dann ganz anders aus, wenn Du die SP rufst. Hier wird nur der Name und die Parameter (sofern definiert) eingetragen.
Hier ein deutsches Beispiel für das Anlegen einer SP in mySQL:
https://www.tutorials.de/threads/mys...ysql-5.259973/

Hier noch ein Link mit diversen Aufruf Varianten in Delphi, allerdings per ADO, sollte sich vom Prinzip aber nicht unterscheiden.
http://scip.be/index.php?Page=ArticlesDelphi12&Lang=EN
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Daten mit SQLDataSet in mysql-Datenbank schreiben

  Alt 3. Apr 2017, 06:45
Versuch es doch mal so:

Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var z : Integer;
begin
  
   SQLDataSet1.Close;
   for z := 5 to 10 do
   begin
   SQLDataSet1.CommandText :=
   'insert into datenbank_neu.Tabelle5 (spalte1,spalte2,spalte3)' +
   'select spalte5,0,spalte12' +
   'from datenbank_alt.Tabelle20 where datenbank_alt.Tabelle20.reihenfolge =' + IntToStr(z)+';';
   SQLDataSet1.ExecSQL;
SQLDataSet1.Close;
   SQLDataSet1.CommandText := // diese Zeile hat in Beitrag #2 gefehlt.
   'insert into datenbank_neu.Tabelle42 (spalte1)' +
   'select spalte5 ' +
   'from datenbank_alt.Tabelle47 where datenbank_alt.Tabelle55.reihenfolge =' + IntToStr(z)+';';
   SQLDataSet1.ExecSQL;
SQLDataSet1.Close;
end;
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.436 Beiträge
 
Delphi 12 Athens
 
#3

AW: Daten mit SQLDataSet in mysql-Datenbank schreiben

  Alt 3. Apr 2017, 07:04
Moin...
Zitat:
Also ich kann mir nicht vorstellen, dass eine For Schleife oder irgendeinanderes Konstrukt in Delphi die Verarbeitung 2er Insert Statements unmöglich macht.
...genauso sehe ich das auch. Ich tippe auf ein klassisches Layer8 Problem.

Das hatte ich schon in #9 probiert...
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var z : Integer;
begin
  for z := 5 to 10 do
  begin
  SQLDataSet1.Close; // neu
  SQLDataSet1.CommandText :=
  'insert into datenbank_neu.Tabelle5 (spalte1,spalte2,spalte3)' +
  'select spalte5,0,spalte12' +
  'from datenbank_alt.Tabelle20 where datenbank_alt.Tabelle20.reihenfolge =' + IntToStr(z)+';';
  SQLDataSet1.ExecSQL;
  SQLDataSet1.Close; // neu
  SQLDataSet1.CommandText := // diese Zeile hat in Beitrag #2 gefehlt.
  'insert into datenbank_neu.Tabelle42 (spalte1)' +
  'select spalte5 ' +
  'from datenbank_alt.Tabelle47 where datenbank_alt.Tabelle55.reihenfolge =' + IntToStr(z)+';';
  SQLDataSet1.ExecSQL;
Zitat:
Exception-Klasse TDBXError mit Meldung 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.datenbank_alt.Tabelle47 where datenbank_alt.Tabelle55.reihenfolge = 5' at line 1'. Prozess
...steht immer noch die Fehlermeldung im Raum.
Weiterhin hatte ich schon 2 Mal gefragt wie die SQL Statements an den ExecSQL ausehen (nicht aus den Quelltext sondern aus dem Debugger) und die exakte Fehlermeldung an diesen Punkten...


@AnfängerDelphi: Wie sollen wir helfen, wenn unsere Fragen nicht exakt beantwortet werden und die Tipps etwas gebracht haben oder nicht. Wir können nicht zur Laufzeit über deine Schulter schauen...

Geändert von haentschman ( 3. Apr 2017 um 11:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Daten mit SQLDataSet in mysql-Datenbank schreiben

  Alt 3. Apr 2017, 11:27
@haentschmann
Hab ich übersehen

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.436 Beiträge
 
Delphi 12 Athens
 
#5

AW: Daten mit SQLDataSet in mysql-Datenbank schreiben

  Alt 3. Apr 2017, 11:30
Alles wird gut...
  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 21:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz