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 30. Mär 2017, 23:16
Wie schon gesagt, anonyme Blöcke wären eine Möglichkeit, nach meiner Kenntnis gibt es das (noch) nicht in mysql.
Ich weiß leider auch nicht, was die Implementierungen in PHP oder anderswo können, wie gesagt, Scriptfähigkeit ist selten und wenn gegeben, dann sind die Libs / Komponenten auch gern so benannt.

Mit PHP o.ä. wärst Du vermutlich erstmal nicht weiter.

Und auch schon gesagt: Der nächste Verwandte der Anonymen Blöcke sind die Stored Procedures. Die sind dafür gemacht. Da die SP selbst mehr oder weniger statisch sind, musst Du dort per Aufruf alle Parameter übergeben, die dort verarbeitet werden sollen.

Vorteil ist jedenfalls, dass man damit mehr oder weniger automatisch transaktional arbeitet, vielleicht suchst Du genau deshalb nach sowas.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: Daten mit SQLDataSet in mysql-Datenbank schreiben

  Alt 31. Mär 2017, 06:52
Moin...
Zitat:
oder ist es besser PHP dafür zu benutzen?
... er hat Jehova gesagt.
Was ist mit dir los? Gleich die Flinte ins Korn werfen wenn etwas nicht auf Anhieb funktioniert.

Hast du dich auch mit den Grundlagen der DBX Komponente befaßt?
http://docwiki.embarcadero.com/Libra...on.TDBXCommand
Zitat:
Die Eigenschaft TDBXCommand.Text wird auf den Befehl gesetzt, der ausgeführt werden soll.
...da steht das das Command.Text für diese eine SQL Anweisung gültig ist die mit ExecSQL ausgeführt wird/werden soll.

http://docwiki.embarcadero.com/Libra...and.Parameters
Zitat:
Parameter können mit der Eigenschaft TDBXCommand.Parameters hinzugefügt.
...das wichtigste sind auch Parameter. Stichwort: SQL Injection.


Die Lösung hast doch schon...
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.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;
Hast du den letzten Stand des Beispiels?

Zitat:
Exception-Klasse TDBXError mit Meldung 'You have an error in your SQL syntax...
Das sagt doch alles. Wie sehen die einzelnen CommandText an jedem ExecSQL aus? (Debugger)

Hinweis:
Hast du dich mal mit der MySQL Lizenzfalle (libmysql.dll) beschäftigt?
http://www.entwickler-ecke.de/viewto...er=asc&start=0
...oder anders gefragt: Warum ist die Entscheidung auf MySQL gefallen?

Geändert von haentschman (31. Mär 2017 um 07:22 Uhr)
  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 06:23 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