NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
tester
Člen
Avatar
tester:29.5.2015 15:46

Ahoj, mám takový problém.

Potřebuji uložit cestu obrázku do DB.
Tady je příkaz pro SQL:

INSERT INTO sprava_abonenti (Cislo,Cislo_karty,Terminal,Cas,IMG) VALUES ('{0}','{1}','{2}','{3}','{4}')", ab[3], ab[4], ab[5], DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "C:\\Users\\Public\\Pictures\\Sample Pictures\\Koala.jpg")

Po vložení do DB se mi v ní ale uloží vše bez lomítek.

Co dělám špatně?

 
Odpovědět
29.5.2015 15:46
Avatar
Odpovídá na tester
Michal Štěpánek:30.5.2015 12:02

Zkus použít parametry a tam si udělej proměnnou cesta jako string. Nehledě k tomu, že takto napsaná cesta ti na jiném počítači nebude fungovat, protože tam bude jiná adresářová struktura...

Nahoru Odpovědět
30.5.2015 12:02
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
tester
Člen
Avatar
tester:1.6.2015 9:07

Tak už se mi to povedlo.

Musel jsem nahradit lomítka dvojtýma.

cesta = cesta.Replace("\\", "\\\\");
 
Nahoru Odpovědět
1.6.2015 9:07
Avatar
Honza
Člen
Avatar
Odpovídá na tester
Honza:1.6.2015 13:10

I tak bych ti doporučoval používat parametry jak ti radí Michal. Pokud cesta bude obsahovat nějaké znaky které se databázi nebudou úplně líbit (např. "--" což v některých databázích označuje začátek komentáře) může ti to docela zatopit. Mimochodem tímto způsobem kterému se říká sql injection se dají nabourat špatně napsané weby které nepoužívají parametry a bývá to jedna z prvních technik které útočník zkusí.

Editováno 1.6.2015 13:11
Nahoru Odpovědět
1.6.2015 13:10
Snadnou cestou se daleko nedostanete, je tam velká tlačenice...
Avatar
tester
Člen
Avatar
tester:1.6.2015 13:23

Jasně to znám a používám u vstupů od uživatelů, ale tady se jedná o to, že si fotím snímek z IP kamery a ukládám snímek do PC s předem známou cestou a vygenerovaným názvem snímku a právě tuhle cestu pak vkládám do DB. Takže se tady SQL injection stát nemůže.

 
Nahoru Odpovědět
1.6.2015 13:23
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.