![]() |
Datenbank: MySQL • Version: 4.0.19 • Zugriff über: MySqlDac
Apostrophe in SQL Statement ersetzen
hi @ all,
ich hab grad folgendes problem: im moment erstell ich aus einem .txt file eine db datei... in denn datensätzen die ich aus dem .txt file einlese kann es sein, das auch apostrophe vorhanden sind die ich mit in die db datei übernehmen muss... wenn ich denn string (bzw. die .txt zeile) einfach so in mein sql statment übernehme, dann krieg ich nen fehler... denn fehler beheb ich dadurch, dass ich ein ' durch zwei ' ersetze bsp. Rock'n'Roll ergibt Rock''n''Roll um die apostrophe in meine string zu ersetzen hab ich mir folgende funktion gebastelt:
Delphi-Quellcode:
jetzt meine frage:
function TMain_Form.fnapostrophe(sRow : String) : String;
var arPos : Array[1..10] of String; i, i2, iAnz, iLen, iPos : Integer; begin iLen := Length(sRow); iAnz := 0; For i := 0 To iLen Do Begin If sRow[i] = #39 Then Begin Inc(iAnz); arPos[iAnz] := IntToStr(i); End; End; For i2 := iAnz DownTo 1 Do Begin iPos := StrToInt(arPos[i2]); Insert(#39, sRow, iPos); End; fnapostrophe := sRow; end; weiß jemand ob es für meine funktion auch schon eine funktion von delphi gibt die genau das macht??? hat jemand vielleicht noch nen vorschlag wies noch einfacher geht??? |
Re: Apostrophe in SQL Statement ersetzen
|
Re: Apostrophe in SQL Statement ersetzen
Oder Verwende Parameter.
|
Re: Apostrophe in SQL Statement ersetzen
Hallo Andidreas,
versuch's doch mit "AnsiReplaceString".
Delphi-Quellcode:
vgl:
...
var SRow : String; begin SRow:= AnsiReplaceStr(SRow, #39, #39+#39); ... ![]() Ich hoffe, das ist das was du suchst und dass das mit dem "#39" und "#39+#39" klappt :roll: ! mfG Andy |
Re: Apostrophe in SQL Statement ersetzen
Hallo Andidreas,
wie schon mkinzler sagte kann ich Dir auch wirklich nur empfehlen, Parameter zu nutzen. Damit brauchst Du dich nicht mit dem Quoting zu beschäftigen, sondern überlässt das ganze der Datenbankkomponente. Da du ja wie angegeben mit MyDAC von CoreLabs arbeitest sollte das auch kein Problem sein.
Delphi-Quellcode:
with query do
begin SQL.Add('INSERT INTO tab(id,wert) VALUES (:id,:wert)'); ParamByName('ID').AsInteger :=xyz; ParamByName('WERT').AsString := sFromFile; end; HTH Markus |
Re: Apostrophe in SQL Statement ersetzen
Also ich nehm immer " oder zweimal ' also '' :stupid:
|
Re: Apostrophe in SQL Statement ersetzen
danke für eure tipps
@sakura QuotedStr(String) war en guter tipp, bloss hab ich da das problem, dass er mir da meinen kompletten String auch nochmal in Apostrophe setzt, der macht also aus rock'n'roll --> 'rock''n''roll' und da hab ich dann das problem, das die ich die apostrophe am anfang und am ende von meinem sql statment net gebrauchen kann.... aber trotzdem ises gut zu wissen das es so ne funktion gibt... @Andy U
Delphi-Quellcode:
des war en sehr guter tipp, durch die funktion kann ich meine funktion wieder komplett rausnehmen :thumb:
sRow := AnsiReplaceStr(sRow, #39, #39+#39);
@mkinzler & markusl was bringt mir das arbeiten mit parametern in diesem fall??? wenn ich meine daten in einem parameter feld in mein sql statement übergeb, hab ich aber trotzdem noch das problem mit denn apostrophen???!!! oder lieg ich da falsch??? :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04: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