11.07.2015 Views

Editorial - Vitajte na stránkach www.einsty.hostujem.sk

Editorial - Vitajte na stránkach www.einsty.hostujem.sk

Editorial - Vitajte na stránkach www.einsty.hostujem.sk

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

P R O G R A M U J E M E uchováva pôvodný aj aktuálny stav údajov, umoòuje dy<strong>na</strong>mickú modifikáciu údajov a metadát (údaje o údajoch), umoòuje <strong>na</strong>tívnu prácu s XML vrátane serializácie.Schematicky by sme DataSet mohli zjednodušene vyjadri takto (preklada to do slo−venèiny je zbytoèné, pretoe takto sa predmetné objekty pouívajú pri programovaní –obr. 2).Komplexne môeme <strong>na</strong>z<strong>na</strong>èi prácu s DataSetom pomocou <strong>na</strong>sledujúceho fragmentukódu:string sConnString = "Persist Security Info=False;" +"User ID=sa;Initial Catalog=Northwind;" +"Data Source=MYSERVER";SqlConnection conn = new SqlConnection(sConnString);conn.Open();string sQueryString = "SELECT CompanyName FROM Customers";SqlDataAdapter myDSAdapter = new SqlDataAdapter();DataSet myDataSet = new DataSet();myDSAdapter.SelectCommand = new SqlCommand(sQueryString, conn);myDSAdapter.Fill(myDataSet);conn.Close();DataSet sa <strong>sk</strong>ladá z dvoch objektov.DataTableCollection – tento objekt zapuzdruje objekty typu DataTable.DataTable – aj tento objekt môeme rozmeni „<strong>na</strong> drobné“, v <strong>na</strong>šom prípade <strong>na</strong> ob−jekty Columns, Rows a Constraints. Ukáeme si <strong>na</strong>j<strong>sk</strong>ôr kód <strong>na</strong> uloenie výsledkov dopy−tu cez DataAdapterDim strConn, strSQL As StringDim da As New OleDbDataAdapter(strSQL, strConn)Dim tbl As New DataTable()da.Fill(tbl)a takisto kód <strong>na</strong> <strong>na</strong>plnenie údajovDim strConn, strSQL As StringDim da As New OleDbDataAdapter(strSQL, strConn)Dim tbl As New DataTable()tbl.Columns.Add("CustomerID", GetType(String))tbl.Columns.Add("CompanyName", GetType(String))…da.Fill(tbl)Ak chceme vypísa jednotlivé záz<strong>na</strong>my, pouijeme kód typu:Dim row As DataRowFor Each row In tbl.RowsConsole.WriteLine(row("CustomerID") + " − " + row("CompanyName"))Next rowDataRelation umoòuje definova relaèné vzahy medzi objektmi v databáze. Reláciemedzi tabu¾kami opisujú vzahy medzi objektmi reálneho sveta, ktoré tieto tabu¾ky pred−stavujú. Pri návrhu databázových tabuliek, <strong>na</strong> ktoré <strong>na</strong>dväzuje aplikaèná logika, môemeObr. 3definova nieko¾ko druhov vzahov. Vzh¾adom <strong>na</strong> kardi<strong>na</strong>litu budeme entity <strong>na</strong>zýva prváa druhá. Medzi nimi bude vzah (relácia) 1 : 1 – prvej entite, <strong>na</strong>príklad záz<strong>na</strong>mu v databázovej tabu¾ke, zodpovedá maximálnejed<strong>na</strong> druhá entita, teda záz<strong>na</strong>m z inej databázovej tabu¾ky 1 : N – prvej entite zodpovedá viac druhých entít. Ale <strong>na</strong>opak, druhej entite zodpove−dá maximálne jed<strong>na</strong> prvá entita. M : N – prvej entite zodpovedá viac druhých entít. A takisto aj <strong>na</strong>opak, druhej entitezodpovedá viac prvých entít.Ale to sme si od<strong>sk</strong>oèili do teórie návrhu databáz. Ukáeme si radšej praktický príklad<strong>na</strong> <strong>na</strong>plnenie DataSetu údajmi, definovanie relácie medzi údajmi a prístup k takto relaè−ne zviazaným údajom.Dim daCustomers As New SqlDataAdapter(strSQLCustomers, strConnSQLServer)Dim daOrders As New OracleDataAdapter(strSQLOrders, strConnOracle)Dim ds As New DataSet()daCustomers.Fill(ds, "Customers")daOrders.Fill(ds, "Orders")ds.Relations.Add("CustomersOrders", ds.Tables("Customers").Columns("CustomerID"), _ds.Tables("Orders").Columns("CustomerID"))Dim rowCustomer, rowOrder As DataRowFor Each rowCustomer In ds.Tables("Customers").RowsConsole.WriteLine(rowCustomer("CompanyName"))For Each rowOrder In rowCustomer.GetChildRows("CustomersOrders")Console.WriteLine(vbTab & rowOrder("OrderID") & " − " & rowOrder("OrderDate"))Next rowOrderNext rowCustomerConstraint (integritné obmedzenia). Aby sme zabránili zadávaniu nesprávnych hodnôtdo databázových tabuliek, je niekedy potrebné zavies pre niektoré ståpce urèité obme−dzenia. Bolo by nezmyslom stanovi niektorý ståpec ako primárny k¾úè, <strong>na</strong>príklad rodnéèíslo, keby polovica záz<strong>na</strong>mov mala v tomto ståpci hodnotu NULL a podobne. Obmedze−nia sa môu vzahova ku konkrétnemu ståpcu alebo k celej tabu¾ke. Najèastejšie sa po−uívajú obmedzenia NOT NULL, PRIMARY KEY, UNIQUE, FOREIGN KEY a CHECK.Na záver <strong>na</strong>miesto zoz<strong>na</strong>mu odporúèanej literatúry bude jednoduchšie pozrie si tentoobrázok kníh z vydavate¾stva Microsoft Press (obr. 3). Niektoré z nich sú u vyšli v èeštine.Nabudúce sa budeme podrobnejšie venova objektu DataGrid <strong>na</strong> zobrazenie údajov <strong>na</strong>stránke HTML.¼uboslav LackoZoz<strong>na</strong>m odporúèanej literatúryProgramujeme v jazyku C#4. èasV tejto èasti seriálu o programovaní v C# sa budeme venova <strong>na</strong>ïalej princípom objekto−vého programovania. Konkrétne pôjde o vlastnosti (properties) a následne sa budemevenova konštruktorom a deštruktorom. Zaèneme však vytváraním inštancií a vysvetlenímsi istej terminológie, resp. rozdielov medzi pojmami, ktoré budeme v tomto seriáli po−uíva.TERMINOLÓGIA. V tejto krátkej podkapitole chcem objasni pojmy trieda, objekt, in−štancia a tvorba inštancií. Pokia¾ sú vám tieto termíny dôverne známe, môete <strong>na</strong>sledujú−ci text s pokojne pre<strong>sk</strong>oèi. Pokia¾ nie, èítajte ïalej.Trieda je základným pojmom OOP. Predstavuje šablónu objektov. Trieda definuje, akobudú vyzera z nej vytvárané inštancie, aké budú ma dátové zloky a metódy. V momen−te, keï z triedy vytvoríte inštanciu (ktorá je v terminológii OOP povaovaná viacerými ja−zykmi za synonymum objektu, èo síce nemusí plati vdy, ale väèšinou sa to tak chápe),môete vyuíva jej metódy, teda presnejšie rozhranie, <strong>na</strong> to, èo potrebujete, resp. <strong>na</strong> to,<strong>na</strong> èo bola trieda <strong>na</strong>vrhnutá. Vytvorenie novej inštancie sa u<strong>sk</strong>utoèòuje v C# pomocouk¾úèového slova new. Za ním uvediete názov triedy a v zátvorkách parametre, pokia¾ mátrieda parametrický konštruktor (o konštruktoroch sa doèítate ïalej). Take ak chcemevytvori inštanciu <strong>na</strong>šej triedy Auto s názvom mojeAuto, spravíme to takto:Auto mojeAuto = new Auto();Tu sme deklarovali premennú mojeAuto typu Auto a priradili sme jej novovytvorenú in−štanciu triedy Auto. Teraz môete pristupova k jej verejným zlokám pomocou operáto−ra . (bodka). Ak teda chceme zavola metódu <strong>na</strong>stavRychlost() a pomocou nej <strong>na</strong>stavihodnotu dátovej zloky rychlost <strong>na</strong> 50, staèí <strong>na</strong>písa:mojeAuto.<strong>na</strong>stavRychlost(50);Poznámka pre programátorov C++: v C# sú všetky objekty dy<strong>na</strong>mické, èo z<strong>na</strong>mená,e <strong>na</strong> vytváranie inštancií musíte pouíva operátor new. Keby ste <strong>na</strong>písali nieèo akoAuto mojeAuto;nemali by ste k dispozícii statický objekt typu Auto ako v C++, ale iba deklarovanú pre−mennú typu Auto. To z<strong>na</strong>mená, e iadny objekt v <strong>sk</strong>utoènosti nebol vytvorený a nebolamu vyhradená iad<strong>na</strong> pamä. Preto nebude moný prístup k jednotlivým èlen<strong>sk</strong>ýmzlokám triedy Auto.VLASTNOSTI. Vlastnosti (z angl. properties) slúia <strong>na</strong> zjednodušenie pristupovaniak súkromným dátovým zlokám objektu. V predošlej èasti sme si ukázali, ako je moné ktýmto zlokám pristupova pomocou prístupových metód. Toto riešenie, ako ste samivideli, môe by v niektorých prípadoch zbytoène akopádne, a práve preto máme k dis−pozícii vlastnosti. Kadá vlastnos sa vzahuje k nejakej súkromnej (prípadne chránenej)dátovej zloke (samozrejme, nemusí by súkromná, ale ako ne<strong>sk</strong>ôr sami zistíte, pouitie1/2003 PC REVUE 109

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!