SQLdb Update- wo sind meine \

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
TKindermann
Beiträge: 22
Registriert: Mi 19. Mai 2010, 07:23

SQLdb Update- wo sind meine \

Beitrag von TKindermann »

Hallo zusammen,
Ich versuche mit SQLdb einen Datei-Pfad in eine Tabelle zu schreiben

Code: Alles auswählen

SelectSQL := '';
SelectSQL := SelectSQL + 'UPDATE vged_sys_parameter ';
SelectSQL := SelectSQL + 'SET VALUE=        "' + Parameters.ImportDir.VALUE  + '" ';
SelectSQL := SelectSQL + 'WHERE PARAMETER = "' + Parameters.ImportDir.DBKEY  + '" ';
SQLQuery.SQL.Text := SelectSQL;
SQLQuery.ExecSQL;
Bei der Ausführung sieht das SQL auch sauber aus:

Code: Alles auswählen

UPDATE vged_sys_parameter SET VALUE = "D:\ccc\abc\xyz.ged" WHERE PARAMETER = "PARA1"
In der Datenbank kommt aber leider nur

Code: Alles auswählen

D:cccabcxyz.ged
an.

Wer hat schon einmal solch ein Problem gehabt.

Viele Grüße

Thomas

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: SQLdb Update- wo sind meine \

Beitrag von af0815 »

TKindermann hat geschrieben:Bei der Ausführung sieht das SQL auch sauber aus:

Code: Alles auswählen

UPDATE vged_sys_parameter SET VALUE = "D:\ccc\abc\xyz.ged" WHERE PARAMETER = "PARA1"
In der Datenbank kommt aber leider nur

Code: Alles auswählen

D:cccabcxyz.ged
an.
Probiere einmal

Code: Alles auswählen

UPDATE vged_sys_parameter SET VALUE = "D:\\ccc\\abc\\xyz.ged" WHERE PARAMETER = "PARA1"
, ob das richtig ankommt wird. Wenn ja, so werden die Backslash als Steuerzeichen betrachtet und müssen vor dem verwenden Escaped werden.

Siehe Infos in der Wiki

Die Funktion die das Handhaben könnte ist EscapeString, ich weiß nur nicht ob das in SQLdb implementiert ist, in Zeos bin ich schon mal drüber gestolpert.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

TKindermann
Beiträge: 22
Registriert: Mi 19. Mai 2010, 07:23

Re: SQLdb Update- wo sind meine \

Beitrag von TKindermann »

Super, danke hat sofort funktioniert.

Habe es mit StringReplace() durchgeführt.

Nochmals danke

Thomas

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: SQLdb Update- wo sind meine \

Beitrag von Christian »

SQLite ignoriert das zwar aber " sind normalerweise keine zugelassenen Quotes für Values. " normalerweise für Tabellen und Felder ' für Werte
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: SQLdb Update- wo sind meine \

Beitrag von Maik81ftl »

Schließe ich mich mal an.

würde 2 Möglichkeiten anbieten.

Code: Alles auswählen

UPDATE vged_sys_parameter SET VALUE = 'D:'+PathDelim+'ccc'+PathDelim+'abc'+PathDelim+'xyz.ged' WHERE PARAMETER = 'PARA1'
Somit hättest du es Platformübergreifend oder

Code: Alles auswählen

UPDATE vged_sys_parameter SET VALUE = 'D:\ccc\abc\xyz.ged' WHERE PARAMETER = 'PARA1'
Only WIndows.

PathDelim hab ich in meinem Projekt auch als guten Tipp bekommen.
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

Antworten