NOVINKA: Staň se datovým analytikem od 0 Kč a získej jistotu práce, lepší plat a nové kariérní možnosti. Více informací:

Diskuze – Lekce 3 - SQLite - Vkládání a mazání dat v tabulce

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
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

 
Odpovědět
16.9.2020 15:02
Avatar
Ľuboš Pinteš:28.11.2020 17:51

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

 
Odpovědět
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

Odpovědět
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."

Odpovědět
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

 
Odpovědět
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.

 
Odpovědět
5.7.2023 19:09
Avatar
Erika Piesch
Člen
Avatar
Odpovídá 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;
 
Odpovědět
15.7.2023 16:06
Avatar
Erika Piesch
Člen
Avatar
Odpovídá 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

 
Odpovědět
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.

 
Odpovědět
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.

Editováno 20.7.2023 14:07
 
Odpovědět
20.7.2023 14:06
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 10 zpráv z 35.