Delphi mysql speciális karakterek

Delphi mysql speciális karakterek
2010-05-02T20:34:05+02:00
2010-05-18T09:51:17+02:00
2022-11-17T19:45:36+01:00
Legend
Sziasztok

Ami adott:
Delphi 2010
MYSQL Szerver verzió: 5.0.75-0ubuntu10.3
MYSQL ODBC 5.01.05.00 az ado kapcsolathoz
MySQL karakterkészlet: UTF-8 Unicode (utf8)

A lenyeg az lenne hogy focsoportokat kellene letarolni a tablaba, de specialis karakternel sajna behall a program, konkretan a- HDD 2,5" - akartak felvinni es gondolom, hogy a " jel lesz a problema ami miatt kiakad, na most erre keresek megoldast, hogyan tudnak specialis karkatert felvinni.
a program reszlet.


unit ujfocsoport; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, Buttons; type Tfrm_ujfocsoport = class(TForm) MainMenu1: TMainMenu; Visszalp1: TMenuItem; BitBtn1: TBitBtn; BitBtn2: TBitBtn; GroupBox1: TGroupBox; Label1: TLabel; e_ujfocsopotnev: TEdit; Label2: TLabel; c_focsop_id: TLabel; procedure Visszalp1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure BitBtn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var frm_ujfocsoport: Tfrm_ujfocsoport; implementation uses data; {$R *.dfm} procedure Tfrm_ujfocsoport.BitBtn1Click(Sender: TObject); var hibas:boolean; uzenet:string; begin hibas:=false; if e_ujfocsopotnev.Text='' then begin hibas:=true; uzenet:='A főcsoport nevét kötelező metgadni!!!'; end; dm.seged.SQL.Clear; dm.seged.SQL.Add('select * from termek_csoport0 where name="'+e_ujfocsopotnev.Text+'" ' +' order by name'); dm.seged.ExecSQL; dm.seged.Active:=true; if dm.seged.RecordCount<>0 then begin hibas:=true; uzenet:='Ez a főcsoport már szerepel az adatbázisunkban!!!'; end; if hibas=true then ShowMessage(uzenet) else begin dm.seged.SQL.Clear; dm.seged.SQL.Add('insert into termek_csoport0 set ' +' id="'+c_focsop_id.Caption+'", ' +' name="'+e_ujfocsopotnev.Text+'",' +' csoport="0",' +' date_mod="'+DateTimeToStr(Now)+'",' +' stad="ON" '); dm.seged.ExecSQL; dm.focsoportok.Active:=false; dm.focsoportok.Active:=true; close; end; end; procedure Tfrm_ujfocsoport.FormClose(Sender: TObject; var Action: TCloseAction); begin e_ujfocsopotnev.Text:=''; end; procedure Tfrm_ujfocsoport.Visszalp1Click(Sender: TObject); begin close; end; end.

Probaltam utana olvasni, de eddig meg nem talaltam igazi megoldast, persze nem adom fel es keresgelek tovabb, de most jol jonne nemi segitseg.

Elore is koszonom.
Mutasd a teljes hozzászólást!
Hi

Szal ha a spéci karakterekkel van a gond a mysql queryben, akkro csináld aztt ami a phpsek csinálnak. A megoldás, hogy egy "\"-t kell a spéci karakter elé rakni. PHPben a mysql_escape_string() függvény megoldja ezt, ennek nézhetsz utána. A visszaper utáni karaktert a mysql értelmezője karakterként veszi be és figyelmen kívül hagyja annak speciális jelentését.
Így tehát ha be akarják tenni a 'HDD 2"' szöveget, akkor a megoldás az is lehet, hogy

INSERT INTO tábla ... VALUES ("HDD 2\"")

Üdv CollerbladE
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd