| Autor | Beitrag | 
| NOS1971 
          Beiträge: 193
 
 Windows 8.1 PRO 64 Bit
 Delphi XE7 Professional
 
 | 
Verfasst: Do 06.03.14 20:11 
 
Hallo,
 ich würde gern in ein Textfeld einen String speichern in dem es auch " gibt ... wie behandle ich das ? Es sollen html tags in einem textfeld gespeichert werden die auch src="iuhiuhikuh" style="lkdshfgjdhljh" beinhalten können ...
 
 aber das INSERT INTO kommt ja so damit nicht klar ... was tun ?
 | 
|  | 
| WasWeißDennIch 
          Beiträge: 653
 Erhaltene Danke: 160
 
 
 
 
 | 
Verfasst: Do 06.03.14 21:38 
 
Wie machst Du es denn? Ich kenne weder SQLite noch Deine Zugriffskomponenten, aber wenn diese SQL-Parameter unterstützen sollten, empfehle ich dringend die Verwendung derselben. | 
|  | 
| NOS1971  
          Beiträge: 193
 
 Windows 8.1 PRO 64 Bit
 Delphi XE7 Professional
 
 | 
Verfasst: Do 06.03.14 21:44 
 
Hier ist ein Beispiel .. ich nutze nur einen sql wrapper ... die url in die db eintragen ist kein thema aber wie handle ich anführungszeichen in einem text
 		                       Delphi-Quelltext 
 									| 1:
 | SQLExecString := 'INSERT INTO ResultURLTable(URL, URLLINK, STATUS, PAGERANK, HTTPSTATUS) VALUES ("' + tempurlstring + '","' + linktagsource + '",-1,-1,-1' + ');';					 |  tempurlstring enthält eine URL und linktagsource den Source des links also etwas in der art <a href="http://test.de" style="color:#000000;" >Linktext</a>
 wenn ich das zusammenführe sieht es so aus
 		                       Delphi-Quelltext 
 									| 1:
 | SQLExecString := 'INSERT INTO ResultURLTable(URL, URLLINK, STATUS, PAGERANK, HTTPSTATUS) VALUES ("http://test.de","<a href="http://test.de" style="color:#000000;" >Linktext</a>",-1,-1,-1' + ');';					 |  und genau da kommt er halt nicht mit klar | 
|  | 
| Xion 
          
  Beiträge: 1952
 Erhaltene Danke: 128
 
 Windows XP
 Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse),  C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
 
 | 
Verfasst: Do 06.03.14 22:07 
 
Prinzipiell kannst du deine Anführungszeichen escapen, indem du ein Anführungszeichen durch zwei ersetzt (z.B: stackoverflow.com/qu...to-escape-in-sqlite) .
 So oder so solltest du vorsichtig sein, was du SQL übergibst. Sonst hat schnell ein Angreifer die Kontrolle über die gesamte Datenbank (SQL Injection )._________________a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius) Für diesen Beitrag haben gedankt: NOS1971
 | 
|  | 
| NOS1971  
          Beiträge: 193
 
 Windows 8.1 PRO 64 Bit
 Delphi XE7 Professional
 
 | 
Verfasst: Do 06.03.14 22:09 
 
Also es ist so das die DB für eine Webseitenanalyse lokal auf dem Rechner läuft .. also unproblematisch    ... ich schaue mal ob ich das so hinbekomme indem ich ein " durch "" ersetze ...   | 
|  | 
| NOS1971  
          Beiträge: 193
 
 Windows 8.1 PRO 64 Bit
 Delphi XE7 Professional
 
 | 
Verfasst: Do 06.03.14 22:12 
 
Erstklassig ... das war es    nun ist alles da wo es hin soll    ...
 Vielen lieben Dank und eine gute Nacht | 
|  | 
| Nersgatt 
          Beiträge: 1581
 Erhaltene Danke: 279
 
 
 Delphi 10 Seattle Prof.
 
 | 
Verfasst: Fr 07.03.14 08:08 
 
Generell ist es besser, parametrisierte Abfragen zu verwenden. Das hast Du solche Probleme nicht.
 Das sieht dann ungefähr so aus:
 		                       Delphi-Quelltext 
 									| 1:2:
 3:
 4:
 5:
 
 | myQuery.Sql.Text := 'INSERT INTO TABELLE (Wert1, Wert2, Wert3) VALUES (:Wert1, :Wert2, Wert3)';myQuery.ParamByName('Wert1').asInteger := 4711;
 myQuery.ParamByName('Wert2').asFloat := 4711.123;
 myQuery.ParamByName('Wert3').asString := 'Hallo, "NOS"';
 myQuery.ExecSql;
 |  Je nach Zugriffskomponenten kann das ein wenig abweichen. Aber auf diese Art musst Du Dich gar nicht darum kümmern, irgendwas zu escapen. Das ist deutlich sicherer.
 Sonst legt vielleicht jemand eine präparierte Seite auf seinen Server, die Deinen Spider abstürzen lässt._________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi) Für diesen Beitrag haben gedankt: NOS1971
 | 
|  |