290 likes | 511 Views
Andmebaasid (ja andmeallikad) .NETis. Heiki Tähis, MVP, , MCPD, MCT. Natuke sissejuhatust Natuke andmeallikatest Natuke XML’st Natuke Linq’st Palju näitamist. Milles räägime?. „Junn“. Andmeallikaga „junn“. Nii juba võib…. Andmeallikad. Ehk, kust kohast andmeid saada.
E N D
Andmebaasid (ja andmeallikad) .NETis Heiki Tähis, MVP, , MCPD, MCT
Natuke sissejuhatust • Natuke andmeallikatest • Natuke XML’st • Natuke Linq’st • Palju näitamist Milles räägime?
Andmeallikad Ehk, kust kohast andmeid saada
Fail (tekstifail, binaarfail, jne) • XML vormingus andmed (failist, veebist, andmebaasist) • Andmebaas • (Veebi)teenus Andmeallikad
ExtensibleMarkupLanguage • Andmete vahetamiseks ja edastamiseks mõeldud keel • Sarnaneb HTML’le kuid eesmärk on oluliselt erinev XML
Nagu juba öeldud – andmete vahetamine, oluliselt mugavam kui näiteks lihtsalt tekstifaili abil • Seadistusfailid • Andmete säilitamine • Objektide kirjeldamine • XML ei tee ise midagi... XML (2)
<?xml version="1.0" encoding=“utf-8"?> deklaratsioon, oluline on just kooditabeli määramine • Suured-väiksed tähed on olulised (tõstutundlik) • Iga tag peab lõppema • Struktuur tuleb hästi disainida • Atribuutide väärused jutumärkide vahele • Üks ja ainult üks juurelement • Elemendinimi ei tohi sisaldada tühikut ning alata numbri või punktiga XML (3)
<?xml version="1.0" encoding=“utf-8"?> <notes> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> <note> <to>Jaan</to> <from>Maris</from> <heading>Reminder</heading> <body>Too kassiletoituka!</body> </note> </notes> XML – Näide (1)
Atribuut võimaldab elemendile lisada infot • Aribuudi väärtused alati ülakomade või jutumärkide vahele! • Ühte atribuuti ei saa kasutada korduvalt ühe elemendi juures <kirje type=“midagi” type=“sedagi” /> • Atribuuti võib kasutada korduvalt erinevate elementide juures <kirje type=“midagi” /> <kirje type=“sedagi” /> XML - Atribuudid
<?xml version="1.0" encoding=“utf-8"?> <notes> <noteid=“1” type=“Reminder”> <to>Tove</to> <from>Jani</from> <body>Don't forget me this weekend!</body> </note> <noteid=“2” type=“Ostulist”> <to>Jaan</to> <tovisible=“false”>NaabriMati</to> <from>Maris</from> <heading>Reminder</heading> <body>Too kassile toitu ka!</body> </note> </notes> XML – Näide (2)
Demo Teeme ise XML faili
Linq Ehk keele sees olev päringukeel
LINQ is a set of extensions to the .NET Framework that encompass language-integrated query, set, and transform operations. It extends C# and Visual Basic with native language syntax for queries and provides class libraries to take advantage of these capabilities. Linq
Päringuid • LINQ to Objects • LINQ to XML • LINQ to SQL • LINQ to DataSets Mida sellega teha saab?
• Muutujatüüp var • • Objekti initsialiseerijad • • Anonüümsed muutujatüübid • • Laiendusmeetodid • • Lambda avaldised Abivahendid
Muutujatüübiga var tähistatakse C# programmeerimiskeeles muutujaid, mille tüüp määratakse initsialiseerimise käigus. • Samas on var tüübikindel, sest kui tüüp on korra määratud, siis edaspidi seda muuta ei ole võimalik. Muutujatüüp var
Kui tavaliselt tuleb objekti loomise järel kõik vajalikud andmeväljad eraldi täita, siis objekti initsialiseerijad loovad võimaluse algväärtustada loomise käigus ka kõik vajalikud andmeväljad. inimetonu = newinime(); tonu.eesnimi= "jaan"; tonu.vanus= 19; inime tonu2 = newinime { eesnimi = "jaan", vanus = 19 }; Objekti initsialiseerijad
Anonüümsed muutujatüübid võimaldavad andmeobjekti tüübi luua selleks eelnevalt klassikirjeldust loomata. var inime2 = new { eesnimi = "Heiki", vanus = 28 }; // luuakse kahe andmeväljaga uus muutujatüüp var jorss = new { vanus = 8, eesnimi = "Jaan" }; // luuakse kahe andmeväljaga uus muutujatüüp Anonüümsed muutujatüübid
Laiendusmeetod on staatiline meetod, mis on väljakutsutav moel nagu see oleks konkreetse instantsi dünaamiline meetod. Võimalikuks teeb selle märksõna thismeetodid parameetri ees. • Kui luua uus klaas Laiendused ning sinna sisse meetod LoeSonadLauses, mis näib välja nii: publicstaticclassLaiendused { publicstaticintLoeSonadLauses(thisString lause) { returnlause.Split(newchar[] { ' ', ',', '.'}).Length; } } Laiendusmeetodid
Lambda avaldised C# keeles võimaldavad luua lihtsaid tingimuslauseid ning omistamisi. List<int> arvud = newList<int>(); // luuakse int tüüpi list for (int i = 0; i < 500; i++) arvud.Add(i); // täidetakse list arvudega 0..500 var paaritud = arvud.FindAll(N => N%2 != 0); // valitakse ainult paaritud arvud Lambda avaldised
LINQ päringud sarnanevad mõnevõrra SQL keele päringutele, kuid samas on need päringud rohkem sarnased keele üldisele süntaksile Näide // loome lihtsa arvude listi, mis sisaldab arve nullist kuni 499’ni List<int> arvud = newList<int>(); // luuakse int tüüpi list for (int i = 0; i < 500; i++) arvud.Add(i); // täidetakse list arvudega 0..500 // teeme päringu, mis valiks sajast suuremad arvud: var paaritud2 = from x in arvud where x % 2 == 0 select x; Päringud
Eesti keeles võiks öelda, et üldiselt on LINQ päringu süntaks on järgmine: võta midagi kusagilt suuremast kuhjast, vaata, kas sobib, kui sobib, siis pista teise kuhja. Puust ja punaseks
Demo LINQ to XML
Demo Teeme andmebaasi ka
Demo LINQ to SQL
Lõpp Küsimused?