Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Sonderzeichen / UPDATE (https://www.delphipraxis.net/134509-sonderzeichen-update.html)

Richie1103 23. Mai 2009 15:51

Datenbank: Mysql • Version: weiß ich nicht • Zugriff über: Direct

Sonderzeichen / UPDATE
 
Hi ich bräuchte nochmal hilfe bei SQL
Also ich möchte gerne folgende Sachen in einer Tabelle ändern.

SQL-Code:
UPDATE tabelle SET spalte1="wert1", spalte2="wert2",spalte3="Blabla \204 blub "hallo"" WHERE (spalte4="wert4"AND spalte5="wert5" );
Wie man vieleicht sieht möchte ich sodnerzeichen in der Tabelle mit z.B. \204 stehen haben.
Allerdings streicht der mir bei sql den Backslash.

Das 2. ist das "Wort". Wie kann ich in sql diese so einbinden das sie nicht den Wert beenden sondern als Zeichen in die Tabelle geschrieben werden? [also " als Zeichen in die Tabelle]

Hoffe ihr habt die Frage verstanden.

Schonmal vielen Dank im vorraus. (Und nochmal vielen Dank für die letzten beantworteten Fragen von mir)

mkinzler 23. Mai 2009 15:53

Re: Sonderzeichen / UPDATE
 
Verdopple mal den Slash

Richie1103 23. Mai 2009 15:57

Re: Sonderzeichen / UPDATE
 
Ok probiere ich aus moment bitte

Bernhard Geyer 23. Mai 2009 16:01

Re: Sonderzeichen / UPDATE
 
Nimm parametrisierte Abfragen!

Ansonsten der Tipp: MySQL erfordert ein ähnliches Escapen wie man es bei C/C++ gewohnt ist bei "\" muss dieser je nach Art von Abfrage sogar doppelt escaped werden "\\\\"

Richie1103 23. Mai 2009 16:07

Re: Sonderzeichen / UPDATE
 
Werde dann in ner Stunde sehen ob es funktioniert.
Die " wie bekomme ich die rein?
mit \"?

Von parametrisierte Abfragen habe ich keine Ahnung wie geht sowas?

mkinzler 23. Mai 2009 16:10

Re: Sonderzeichen / UPDATE
 
Verwende wie gesagt parameter, dann hast du die ganzen Probleme nicht.

SQL-Code:
UPDATE tabelle SET spalte1=:wert1, spalte2=:wert2, spalte3=:wert3  WHERE spalte4=:wert4 AND spalte5=:wert5;

Richie1103 23. Mai 2009 18:23

Re: Sonderzeichen / UPDATE
 
Und wo ahbe ich da Parameter verwandt? Ist in meinen Augen das Gleiche wie oben....

Jürgen Thomas 23. Mai 2009 18:30

Re: Sonderzeichen / UPDATE
 
Zitat:

Zitat von Richie1103
Und wo ahbe ich da Parameter verwandt?

Du hast eben keine verwendet, sondern die Werte direkt in den SQL-String eingebaut. Das ist immer schlecht wegen dieser Konvertierungsprobleme und wegen Sql-Injection.

Zitat:

Ist in meinen Augen das Gleiche wie oben....
Ganz und gar nicht. Mit den Gänsefüßchen fügst die Werte direkt in den SQL-String ein; mit der Formulierung mit :wert1 (der Doppelpunkt kennzeichnet Parameter unter MySql, bei anderen DBMS geht es anders) wird auf Parameter verwiesen, die separat eingetragen werden.

Für genaueren Code müsstest du die Frage "Zugriff über" konkret beantworten.

Jürgen

mkinzler 23. Mai 2009 18:30

Re: Sonderzeichen / UPDATE
 
:wert1, :wert2 usw. sind Parameter, welche man später durch die werte ersetzen kann. Dadurch erspart man sich das Quoten und casrten in String.

rakekniven 24. Mär 2010 07:40

Re: Sonderzeichen / UPDATE
 
Ich nutze Parameter mit Begeisterung, stolperte gestern jedoch über ein Problem.

Verwende die Zeos-Libs und MySQL.

Delphi-Quellcode:
DM_Database.qMessage.SQL.Add ('update messages set ');
DM_Database.qMessage.SQL.Add ('Text=:Text1, ');
DM_Database.qMessage.SQL.Add ('Comment=:Comment1');
DM_Database.qMessage.SQL.Add (' where Section_ID = ' + IntToStr(Message_To_Edit.section_id_old) + ' and' +
            ' Message_ID = ' + IntToStr(Message_To_Edit.message_id_old) + ' and' +
            ' Lang_ID = ' + IntToStr(Message_To_Edit.lang_id));

DM_Database.qMessage.ParamByName('Text1').AsString      :=   Message_To_Edit.text_new;
DM_Database.qMessage.ParamByName('Comment1').AsString   :=   Message_To_Edit.comment_new;
Wenn ein Parameter am Ende ein '\' enthält, dann schlägt die Funktion fehl und ich bekomme die Exception 'Incorrect token followed by ":"'

Wie kann man das umschiffen?
Liegt das an den Zeos-Libs?

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:15 Uhr.
Seite 1 von 2  1 2      

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