Diskuze: Ukládání

C# .NET .NET (C# a Visual Basic) Ukládání American English version English version

Avatar
Energy
Člen
Avatar
Energy:

Jak lze udělat, aby si program pamatoval třeba proměnnou i po vypnutí programu?

 
Odpovědět 12.6.2012 12:30
Avatar
Odpovídá na Energy
David Jančík [sczdavos]:

Uložit do souboru. A pak ji z něj zase načíst.

using (StreamWriter sw = new StreamWriter(new FileStream(@"soubor.txt", FileMode.Create)))
{
  sw.WriteLine("Text");
  sw.Flush();
}
// u načítání se nemusí dávat stream dovnitř, stačí jen cesta k souboru
using (StreamReader sr = new StreamReader(new FileStream(@"soubor.txt", FileMode.Create)))
{
  string s;
  while ((s = sr.ReadLine()) != null) // tato podmínka musí být přesně
  {...}
}
Nahoru Odpovědět 12.6.2012 12:58
Čím více času dostaneš, tím méně ho máš.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Energy
Kit:

Nejlépe uložením hodnoty do databáze. Vymýšlet nový formát souboru dnes už nemá význam.

Nahoru Odpovědět 12.6.2012 13:56
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Energy
Neregistrovaný
Avatar
Energy:

A jak vytvořím a zapisuji databáze?

 
Nahoru Odpovědět 12.6.2012 14:12
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Energy
David Čápka:

Pro práci s databázemi musíš umět velmi dobře kolekce a dotazy. Zatím použij co radí sczdavos.

Jinak databázím se tu budeme věnovat, ale myslím, že máš ještě čas, je k tomu samozřejmě potřeba znalost objektů a podobně, kterou si můžeš zatím číst a učit, je tu toho spoustu.

Nahoru Odpovědět 12.6.2012 14:19
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Kit:

Většina programovacích jazyků dnes má nějakou databázi přímo v sobě nebo se dá stáhnout hotová knihovna (často velmi malá), která se k aplikaci přilinkuje.

Ovšem do C# moc nevidím, v něm se převážně asi bude používat MS Access. Mělo by stačit nakouknout do manuálu.

Nahoru Odpovědět 12.6.2012 14:22
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

To jsem netušil, že v C# jsou s tím takové obstrukce. V PHP mám s databázemi méně práce, než s obyčejnými soubory.

Nahoru Odpovědět 12.6.2012 14:25
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Ano, C# má velmi pěknou embedded databázi, ale bez znalosti OOP nepochopí ORM a bez toho asi nemá smysl s tím vůbec začínat. Asi tuším, na jaké je úrovni a ptá se jen na uložení jedné proměnné.

Máš samozřejmě s DB pravdu, ale prostě je to složitější a to hlavně pro začátečníka.

Nahoru Odpovědět 12.6.2012 14:27
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Kit:

Kolem ORM je hlavně mnoho řečí. Nejvíc zmatků do toho vkládají ti, kteří se snaží objekty napasovat na relační databáze.

Obráceně to jde mnohem jednodušeji. Stačí myslet relačně a použít k tomu objekty.

Nahoru Odpovědět 15.6.2012 16:37
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
HAPPY DAY
Člen
Avatar
HAPPY DAY:

já osobně používám soubory. například teď jsem řešil jednu zakázku pro tvorbu eknih, a moje řešení znělo:
vytvoření webové aplikace, kde jsou všechny textboxy, tlačítka, atd.
bude na webu, kde je tvoje pozadí (samozřejmě pokud máš rozmyšleno, jaké)
člověk si tam vyplní různé věci, jako název, obrázek obálky, životopis, o knize, atd
bude moci otevírat soubory s těmito věcmi. dále tam budou nástroje na zvýraznění textu,
tabulek, obrázků (pokusím se o načítání docx a doc formátů).
po stisknutí tlačítka uložit se zavolá metoda převeď a ulož, která přeloží text
a uloží do souboru (X)HTML. následně se zapíše do souboru, kde jsou odkazy na knihy.
odkaz na právě vytvořenou knihu.

PS: tady zrovna vidíš výhodu souborů.
navíc, když ti nějaký web spadne (teď mě omluv jestli řeknu blbost), tak se databáze vymaže.

zato soubory ne :D

Nahoru Odpovědět 23.6.2012 11:56
Kdo pozdě chodí, sám sobě škodí (AUTOR: já)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na HAPPY DAY
David Čápka:

Databáze je fyzicky uložena samozřejmě také v souborech (jak jinak), princip je tedy naprosto stejný. DB se tedy s pádem serveru nevymaže, protože je uložena na disku, pouze některé její části jsou v operační paměti jako cache. Výhodou DB je, že již nemusíš řešit věci jako vyhledávání nebo bezpečnost, protože je za tebe vykonává tzv. databázový stroj.

Ty budeš mít třeba problém s editací knih, protože je ukládáš již převedené do HTML. Kdybys měl hodnoty v DB a z nich knihu renderoval pomocí server-side jazyka, bylo by to mnohem snažší.

Nahoru Odpovědět 23.6.2012 12:07
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
HAPPY DAY
Člen
Avatar
Odpovídá na David Čápka
HAPPY DAY:

no myslel jsem takhle:
1.převede se na HTML
2.uloží se do souboru
3.do dalšího souboru zapíšu odkaz na HTML soubor, kde je kniha
4.díky za objasnění databází.

Nahoru Odpovědět 23.6.2012 12:17
Kdo pozdě chodí, sám sobě škodí (AUTOR: já)
Avatar
Kit
Redaktor
Avatar
Odpovídá na HAPPY DAY
Kit:

Také jsem kdysi preferoval ukládání do souborů, než jsem zjistil, že databáze je rychlejší a spolehlivější. Také za tebe vyřídí spoustu záležitostí (ACID), které musíš v souborech obstarat ručně a které určitě neřešíš.

Vyzkoušel jsem už 11 databází, na běžném hostingu jich je běžně dostupných 5-6 druhů s různými vlastnostmi. Výběr je velký, stačí se jen naučit je používat.

Tvůj přístup je dobrý, dokud nebudeš potřebovat fulltextové vyhledávání mezi články nebo nebudeš potřebovat řešit automatické vazby mezi nimi.

Databáze je také lépe zabezpečena proti útokům XSS. Schopní programátoři si však rádi udělají díry i do databáze :)

Nahoru Odpovědět  +1 23.6.2012 19:12
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
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 13 zpráv z 13.