Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Insert in SQLite via Datasnap - Anfängerproblem (https://www.delphipraxis.net/205737-insert-sqlite-via-datasnap-anfaengerproblem.html)

Dr. Jack 10. Okt 2020 13:46

Insert in SQLite via Datasnap - Anfängerproblem
 
Tag zusammen,

ich verwendene nun das erste mal eine Datasnap-Verbindung von einer Windowsanwendung zum Android. Das visuell-binding klappt soweit ganz gut, nur
möchte ich jetzt auch sql updates/inserts ausführen. Und genau da liegt das Problem, was mit Hilfe von Google irgendwie auch nicht zu lösen ist.

Also ich will Folgendes machen: Im Android klicke ich auf einen Button, der ein update zur SQLite DB via Datasnap senden soll.
Jetzt wollte ich das Client-Dataset ansprechen, aber es beschwert sich "Remote-Fehler: Änderungen an CommandText sind nicht gestattet."

Code:
comm_cds.CommandText := 'update fam_check set '+

                                        'starus_freigabe =     1,'+
                                        'freigabe_user =     12,'+

                                       'where id = '+
                                       (Quotedstr(amsc.Label9.Text));

            comm_cds.Execute;
            comm_cds.Open;
            comm_cds.Refresh;
Es scheint also ganz anders als eine normale SQL Verbinung einer Windowsanwendung zur DB zu funktionieren.
Die Elemente auf der Form sind wie im Embarcadero-Tuturial beschrieben.

SQLConnextion --> Tabelle --> Datasetprovider --> SQL-Datasnap --> DSProviderConnection --> Clientdataset

Welches der Elemente muss ich wie ansprechen, damit ich nen tollen Insert in die DB machen kann?
Hoffe das war einigermaßen verständlich erklärt. So ganz habe ich die Materie leider nicht durchstiegen...
Schon mal Danke für die verständnisvollen Antworten :)

Uwe Raabe 10. Okt 2020 14:49

AW: Insert in SQLite via Datasnap - Anfängerproblem
 
Hast du dir schon mal die Datasnap Beispiele angesehen, die Delphi mitbringt?

haentschman 10. Okt 2020 15:10

AW: Insert in SQLite via Datasnap - Anfängerproblem
 
Moin...:P
Zitat:

Remote-Fehler: Änderungen an CommandText sind nicht gestattet
1:
...schau mal hier: https://www.delphipraxis.net/177390-...tenbanken.html #3

2:
Delphi-Quellcode:
comm_cds.Execute; // hier ist noch "update fam_check set..." als SQL eingetragen
comm_cds.Open; // ??? jetzt die Datenmenge öffnen? ...eher ein select mit neuem Statement
comm_cds.Refresh; // nicht nötig, da Open sowieso die Datenmenge abholt ... doppelt gemoppelt.
Empfehlung: getrennte DataSets

3:
Delphi-Quellcode:
'update fam_check set '+
   'starus_freigabe =    1,'+
   'freigabe_user =    12,'+
   'where id = '+
   (Quotedstr(amsc.Label9.Text));
:warn: immer Parameter benutzen!
http://docwiki.embarcadero.com/Libra...DataSet.Params
wegen: https://de.wikipedia.org/wiki/SQL-Injection
besser:
Delphi-Quellcode:
comm_cds.CommandText := 'update fam_check set ' +
                           'starus_freigabe = :P1,' +
                           'freigabe_user = :P2,' +
                           'where id = :ID';

comm_cds.CommandText.Params.ParamByName('P1').AsInteger := 1;
comm_cds.CommandText.Params.ParamByName('P2').AsInteger := 12;
comm_cds.CommandText.Params.ParamByName('ID').AsString := Quotedstr(amsc.Label9.Text);
PS: sollte die Syntax nicht ganz korrekt sein, nagelt mich nicht fest. :zwinker:

:wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 18: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