Starší komentáře ke článku: Kniha návštěv v ASP.NET - s použitím databáze

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 27.9.2002 0:26:30

Preco je to v hranatych zatvorkach??? ( [Id] [int] ....)

PS. V ASP.net alebo skriptoch pre MSSQL sa nevyznam, ale rad by som si rozsiril obzor :)

Avatar

Autor komentáře: Slavomir Furman

Datum vložení: 27.9.2002 5:15:50

Zdravim!

>>Preco je to v hranatych zatvorkach??? ( [Id] [int] ....) <<
Myslim, ze preto lebo tak vygeneroval SQL Server (napr. ak si date v Enterprise Manager-i "All Tasks -> Generate SQL Script" na danej tabulke).

V danom pripade su hranate zatvorky nanic a pokojne by to mohlo byt i bez nich. Ked v danom pripade ide o bezne bezproblemove identifikatory (nazov stlpca a nazov typu), tak identifikator nemusi - no moze - byt delimitovany, uzavrety v hranatych zatvokach resp. v uvodzovkach.

No su pripady ked by musel byt, napr. ak by nazov stlpca obsahoval medzeru alebo ak by sme chceli ako nazov stlpca pouzit nejake rezervovane slovo z T-SQL.

No a SQL-DMO objekt, ktory generuje skript v Enterprise Manageri pouziva ten vseobecnejsi pripad a uzatvara vsetky identifikarory do zatvoriek.

Inak vec co sa tyka pravidiel pre tvorbu a pouzivanie identifikatorov je trochu zlozitejsia, ak vas to zaujima skuste sa pozriet do BOL a hladajte "Transact-SQL Syntax Element -> Using Identifiers".

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 27.9.2002 12:22:10

Takze je to MS vymysel alebo je to v ANSI SQL???. Doteraz som sa s niecim podobnim nestretol.

Avatar

Autor komentáře: Jarda Jirava

Datum vložení: 27.9.2002 11:52:35

Zdravim,
mozna bych doporucil malou upravu. Pokud chcete setrit jeste vice prostredky, tak je vhodnejsi pouzit SqlDataReader misto naplneni DataSetu. Pokud by stranka preci jen mela vetsi navstevnost, a kazdy navstevnik by si neco napsal, tak budeme zbytecne tahat celou tabulku do pameti a pote ji stejne po jednotlivych radcich vypisovat. (Nehlede na to, ze je vhodnejsi a rychlejsi uvadet sloupce v dotazu misto *.)
Tot pouze muj nazor, usetri se minimalne jeden pruchod celou tabulkou pro naplneni DataSetu.

Avatar

Autor komentáře: Michal Naiman

Datum vložení: 27.9.2002 12:30:56

Mate pravdu, SqlDataReader se pro tento ucel hodi lepe, ale jelikoz stranka byla puvodne vypisovana pomoci DataGridu, DataSet byl elegantni reseni. Jinak si ale myslim, ze DataSet nepozre nejake velke prostredky serveru, uz jenom kvuli tomu, ze po pruchodu funkci se zaradi k odstraneni z pameti do GC.

Avatar

Autor komentáře: Radim Hampel

Datum vložení: 27.9.2002 13:43:33

Spravne, okamzite se zahodi, takze je naprosto zbytecne jej vytvaret. Uvnitr datasetu je spousta zbytecnyho balastu, datareader je presne urcen pro toto pouziti. Myslim si, ze tyto clanky ctou lide, kteri se chteji necemu priucit, takze bych predpokladal, ze tyto clanky pisi lide, kteri danemu tematu rozumi a maji s nim prakticke zkusenosti. Coz tady nevidim, navic v tak trivialnim prikladu. Jedna se pri prvnim pohledu o zminovany datareader a take o scitani retezcu, ktere je opet nevhodne, spravne je pouzit stringbuilder pro urychleni a snizeni vypocetnich naroku.

Radim Hampel

Avatar

Autor komentáře: Jarda Jirava

Datum vložení: 28.9.2002 16:03:27

Diky za Vasi podporu a nemuzu nez jen souhlasit s tim skladanim retezcu. Jeste, ale bych se vratil k te poznamce autora, ze drive to zobrazoval pomoci DataGridu a ted to zmenil. Pokud vim i pro DataGrid je mozne pouzit jako zdroj DataReader. Takze tuto poznamku neberu.

Nelze tedy nez souhlasit, na Inteval chodi lide, kteri se chteji necemu priucit, dovedet se o novych technologiich nebo postupech a pokud uvidi tady spatne priklady, jak se potom zachovaji v praxi?

Jenom pro informaci, na kolik nedostatku jsem v tak kratkem clanku narazil.
- ConnectionString by mel byt spise ve web.config
- pouziti vyberu sloupcu pomoci * misto jejich vyjmenovani
- pouziti datasetu misto datareadru
- pri prochazeni se udavaji sloupce jmenem misto ordinalni pozici
- skladani retezce do stringu misto stringbuildru
- parametry do dotazu se predavaji "natvrdo" misto pouziti parametru
- alespon, kdyz uz se otevira spojeni na db, tak by mel nasledovat blok try/catch/finally, o moznosti pouziti ulozene procedury misto dvojiho dotazu na server ani nemluvim
- posledni vytka je docela zasadni, kdyz uz pouzivate validatory, nestalo by za to si tu stranku overit, zda je skutecne validni? Co kdyz bude mit nekdo vypnuty JavaScript na strane klienta? Proto preci existuje property Page.IsValid, ktera nam rekne, zda je vse ok i na serveru.

No radeji toho necham, tech pripominek uz bylo docela dost. Pekny den.

Avatar

Autor komentáře: Tomas Dupavy

Datum vložení: 28.9.2002 17:41:57

Zdravim. Koukam ze se tu snazite strhnout na autoruv ucet pekny flamewar. No me se clanek libil. Je to ukazka funkci aplikace a popsana tak aby ji pochopil i laik. Ja s .NETem teprve zacinam, takze se mi tyto clanky libi pro jejich snadnou pochopitelnost. Mozna mate pravdu ze je to trochu nedotazene, ale vypis vsech techto konstrukci a jejich popisovani by bylo na 10 stran nudneho textu. Navic kupu podobnych nedostatku jsem videl i v jinych clancich na Intervalu-je to patrne z toho, ze i autori jsou pouze lide. Clanek proste dle meho nazoru nemuze pojmout vsechny aspekty co vy jste si tady vyjmenovali. Tim samozrejme netvrdim, ze by nebyly pravdive. Vy se chcete neco priucit z pokrocilych technik, ja z tech zacatecnickych, proto me tento clanek vyhovuje. Uz mi dokonce bezi na serveru. Jeste poznamku. Pro DataGrid je sice mozne pouzit DataReader, ale i DataSet a proc by tedy meli vsichni programovat tak se Vam libi. Takze Vasi poznamku neberu.

Avatar

Autor komentáře: Jarda Jirava

Datum vložení: 29.9.2002 11:52:53

Take zdravim,
nesnazim se strhnout zadny flame (skoda, ze jste nezanechal kontakt, nemusel bych psat sem). Jenom jsem chtel upozornit, ze v teto ukazce je nekolik chyb, ktere by se v dobre napsane aplikaci nemely objevit.
Asi jsem mel velke stesti, ze v mych zacatcich jsem se dostal do kontaktu s programatory, kteri toho hodne umeli a naucili me o (nebo u?) programovani premyslet.
Vim, ze to co se lide nauci jako prvni to potom pouzivaji stale a je tezke je presvedcit, aby zmenili nazor a zacali to delat jinak (i kdyz jim to prinese vetsi uzitek). Proto jsem take reagoval. Proc se ucit delat neco hure, kdyz to jde efektivneji? Ano, DataSet jde pouzit, ale take pojedete do Brna z Prahy pres Ostravu? Neni efektivnejsi jet primo (za predpokladu, ze v te Ostrave nepotrebujete neco zaridit, stejne jako si nepotrebujete vsechna data uschovat pro pozdejsi pouziti).
Peknou nedeli.

Zpět na článek | Úvodní stránka Interval.cz