IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – 3. diel - SQLite - Vkladanie a mazanie dát v tabuľke

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Pavel Kubalík:16.9.2020 15:02

Zatím dobré
Jsem čím dál více nadšený. Je to zde opravdu dobře podané. Pochopitelně to chce cvik.
Trochu mne zdržuje to, že mám popisy v DB Brovseru přeložené částečně do češtiny, ale to je detail, který má na druhé straně zase výhody.
Raději nepřejdu dnes k další lekci a promyslím si to co jsem se naučil.
Děkuji PK

 
Odpovedať
16.9.2020 15:02
Avatar
Ľuboš Pinteš:28.11.2020 17:51

Našiel som malinkatý preklep:
injecton -> injection

 
Odpovedať
28.11.2020 17:51
Avatar
Luboš Štancl:11.5.2023 13:55

Autorovi bych chtěl vzkázat, že tato informace o SQL Injection je pro žáka 3.lekce databází SQLite velice náročná na pochopení a spíše mu "zamotá hlavu", než přinese užitek. Zejména tyto pasáže:

(1.řešení) ... řešení je velmi jednoduché. Problém dělá několik speciálních znaků v proměnné, jako jsou uvozovky a několik dalších. Pokud tyto znaky potřebujeme, musíme je tzv. odescapovat, tedy předsadit zpětným lomítkem.

(2.řešení) ... Další variantou, jak aplikaci zabezpečit proti injekci, je obsah

Odpovedať
11.5.2023 13:55
The first rule of programming: If it works, don't touch it.
Avatar
Luboš Štancl:11.5.2023 13:57

Část textu mi to výše - při vkládání hodnocení "uřízlo", proto pro srozumitelnost vkládám celý text připomínky znovu:

Autorovi bych chtěl vzkázat, že tato informace o SQL Injection je pro žáka 3.lekce databází SQLite velice náročná na pochopení a spíše mu "zamotá hlavu", než přinese užitek. Zejména tyto pasáže:

(1.řešení) ... řešení je velmi jednoduché. Problém dělá několik speciálních znaků v proměnné, jako jsou uvozovky a několik dalších. Pokud tyto znaky potřebujeme, musíme je tzv. odescapovat, tedy předsadit zpětným lomítkem.

(2.řešení) ... Další variantou, jak aplikaci zabezpečit proti injekci, je obsah proměnné do dotazu vůbec nezadávat. V dotazu jsou poté uvedeny pouze zástupné znaky (otazníky): ... A proměnné se pošlou databázi potom zvlášť a najednou.

Lepší by bylo buď dát odkazy, kde si lze dohledat detailnější popis ke stručnému "...proměnné se pošlou databázi zvlášť a najednou..." anebo myšlenku zjednodušit na např. pravidlo "Do dotazu typu DELETE nikdy proměnné nevkládat bez ošetření proti nebezpečným znakům ODESCAPOVÁNÍM."

Odpovedať
11.5.2023 13:57
The first rule of programming: If it works, don't touch it.
Avatar
Klara Bobková:23.6.2023 8:37

Prosim, co delam spatne.. vlozeni pres Execute SQL je ok, ale kdyz zkusim treba smazat uzivatele s id 1(ci jine), tak mi to po kliknuti na execute(sipku play) vypise:

Execution finished without errors.
Result: query executed successfully. Took 0ms, 0 rows affected
At line 1:
DELETE FROM 'uzivatele' WHERE 'id_uzivatele' = 1;
a zaznam zustava. Kdyz ho dam odstanit pres browse data "delete curtrent record" tak zmizi

 
Odpovedať
23.6.2023 8:37
Avatar
Patrick Hamal:5.7.2023 19:09

"Níže máme vybranou správnou tabulku
uzivatele a klikneme na New Record." Nikde New Record není. článek je starý neaktualizovaný DB Browser interface vypada jinak.

 
Odpovedať
5.7.2023 19:09
Avatar
Erika Piesch
Člen
Avatar
Odpovedá na Klara Bobková
Erika Piesch:15.7.2023 16:06

Klari , možná se mýlím, ale není možné, že máš název sloupce podle tutoriálu uzivatele_id a ne id_uzivatele. Tohle mi funguje:

DELETE FROM uzivatele WHERE uzivatele_id= 1;
 
Odpovedať
15.7.2023 16:06
Avatar
Erika Piesch
Člen
Avatar
Odpovedá na Patrick Hamal
Erika Piesch:15.7.2023 16:08

Už si pomalu zvykám, že všechno není tak jednoduché, ale hlavně mám Mac, takže mám všechno jinak :) . Musela jsem si nastavit znovu angličtinu, aby to pro mě bylo jednodušší. Zajímavý, co mi tenhle kurz o mě říká. Možná mě naučí něco jiného než očekávám, ale rozhodně se učím :D

 
Odpovedať
15.7.2023 16:08
Avatar
Hana Svobodová:20.7.2023 11:10

Když jsem chtěla smazat z tabulky položku pomocí příkazu DELETE FROM DELETE FROM "uzivatele" WHERE "uzivatele_id" = 2;, tak byl příkaz proveden pouze v případě, že jsem měla záznamů v tabulce více než dva. Pokud mám jen dva záznamy, druhý se nevymaže. Dokázal by mi to někdo vysvětlit, čím to je?

Část o injection mi přijde pro začátek zbytečně složitá a spíše matoucí, zařadila bych ji později.

 
Odpovedať
20.7.2023 11:10
Avatar
Adéla Ozomová:20.7.2023 14:06

Nevím proč, ale při prvním příkazu ...DELETE FROM... mi to taky vyhodilo chybu.
Zkusila jsem příkaz smazat a zkusit ho znovu napsat s jiným id uživatele. Místo jedné šipky (Provést všechny vybrané SQL) jsem stiskla šipku se svislou čárou (Provést aktuální řádek), [která je vpravo od té modré šipky] a povedlo se!
Možná to někomu pomůže, ale možná to nemá na nic vliv :) Když nad tím přemýšlím logicky, může být to vyhazování chyb způsobené právě tím, že chceme po databázi, aby provedla veškeré příkazy, nejen nově napsaný DELETE FROM, ale i příkazy nad tímto novým, tedy například vytvoření nových uživatelů apod.

Editované 20.7.2023 14:07
 
Odpovedať
20.7.2023 14:06
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!