Universal Windows Platform bevezető

Slides:



Advertisements
Hasonló előadás
Windows Virtualizáció
Advertisements

Tananyag: konzultáció
A Windows Azure egy skálázható számításifelhő-platform, amelyet a Microsoft hosztol a világ több pontján lévő adatközpontjaiban. Az Azure egyszerű,
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
KEVESEBB FELÜGYELET ÚJ ÜZLETI MODELLEK NAGYOBB TERMELÉKENYSÉG.
... manapság BizSpark WebsiteSpark Empower for ISVs MAPS (Web Solutions Toolkit ) Microsoft Partner Network Regisztrált szintCertified és Gold Certified.
Licencelés Kovács Nóra Ker-Soft Kft.
Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
Adatbázisok SQL. TARTALOM Szijártó M.2 Témakörök  Az SQL tulajdonságai  A műveletek fajtái  Objektum-műveletek  Lekérdezések Tulajdonságok és műveletek.
PL/SQL folytatás Kurzorok Alprogramok Tárolt eljárások ADATBÁZIS ALAPÚ RENDSZEREK.
Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
Delphi programozás alapjai
„AZ IT MAGÁN ÉS NYILVÁNOS ÉLETE” Avagy hogyan születik a BI iránt igény az IT üzemeltetésben Benkovics Viktor Vezető tanácsadó Microsoft Magyarország –
Windows Azure Infrastruktúra és platform a felhőben
5. GYAKORLAT SQL CREATE TABLE, aktualizálás. S QL Structured Query Language A relációs adatbáziskezelés szabványos nyelve Nem algoritmikus, de beépíthető.
Lehetőségek, felhasználható eszközök, eddigi tapasztalatok
– SQL 2: Adatok kezelése – Tarcsi Ádám, január 30. Adatbázis gyakorlat.
– Adattáblák & adatok kezelése – Tarcsi Ádám január Adatbázis gyakorlat.
A Windows 7 automatizált telepítése Windows AIK használatával
Adatbázis alapú rendszerek
Készítette: Sárközi Anikó
Közös kinézet Mester oldal, témák, skin-ek, css Webalkalkalmazás fejlesztése ASP.NET-ben Krizsán Zoltán.
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
A felhő az üzleti vezető, a fejlesztő és az üzemeltető szemével A vállalati számító- központ kiterjesztése a felhőbe Biztonság és üzemeltetés a felhőben.
Ittzés Zsigmond Budapest Airport IT Infrastruktúra manager
Microsoft CRM online Strén András
DML. Új rekord beszúrása: INSERT INTO tábla (oszlop1,oszlop2,…) VALUES (érték1,érték2,…); Rekord módosítása: UPDATE tábla SET oszlop = érték WHERE feltétel;
Bátyai Krisztián NetAcademia Oktatóközpont oktató, fejlesztő MCT, MCPD
A program a „Tudáshasznosulást, tudástranszfert segítő eszköz-, és feltételrendszer kialakítása, fejlesztése a Műegyetemen” (TÁMOP /1/KMR )
Rendelkezésre álló erőforrások pontos ismerete Kiosztott feladatok közel „valósidejű” követése Átláthatóság Tervezési folyamatok támogatása.
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Adatbázis-kezelés SQL-lel
Budai Péter Szakmai és biztonsági vezető Microsoft Magyarország.
SQL DDL DATA DEFINITION LANGUAGE. Táblák létrehozása CREATE TABLE táblanév ( oszlopnév1 típus(méret) /DEFAULT érték/ /NOT NULL/, oszlopnév2 típus(méret)
Delphi Készítette: Rummel Szabolcs Elérhetőség:
SQL.
Visual Basic 2008 Express Edition
Visual Basic 2008 Express Edition
XML fejlesztések TSQL fejlesztések Tábla paraméter SQLCLR fejlesztések 8k limit feloldása Több paraméteres UDA-ek Ordered UDF-ek Entity Framework ADO.NET.
1 Sramó András Adatbázis-technológia V. előadás Adatbázis-technológia 5. előadás Az SQL.
Tarcsi Ádám, Adatbázis gyakorlat – Adattáblák – Tarcsi Ádám, január.
Rugalmas, moduláris felépítés Rugalmas telepítés Jól tervezhető szerepkörök Folyamatos rendelkezésre állás Egyszerű felügyelet Elérés bárhonnan Postafiók.
A Microsoft Üzleti Intelligencia megoldása és platformja
Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai
Szerver és kliens gép közötti kommunikáció Adattárolási modellek  OLTP: OnLine Transaction Processing az MSSQL Szervert egy időben egyszerre sok felhasználó.
5. gyakorlat Fleiner Rita.
Blog Fülöp Dávid MCT, MCPD Egy blog sémája Use Case-ek – Blog áttekintése – Egy blogpost megtekintése – Blogpost írása – Blogpost.
Webprogramozó tanfolyam
SQL. SQL jellemzői Nem algoritmikus (nem tartalmaz algoritmikus szerkezeteket: ciklus, eljárás, elágazás) Nem rekurzív (önmagát nem hívhatja) Halmazorientált.
1 Verseny 2000 gyakorlat SQL 2000 Server Portál adatbázis létrehozása.
Christopher Chapman | MCT Content PM, Microsoft Learning, PDG Planning, Microsoft.
Ismerkedés az Active Directory-val
Vállalati infrastruktúra, mely minden igényt kielégít Felhasználóbarát eszközök és élmények.
DLL használata és készítése Feladat
The information contained in this document represents the current view of Microsoft Corp on the issues discussed as of the date of publication. Because.
Kiss Tibor System Administrator (MCP) ISA Server 2006.
Farkas Bálint | Technical Evangelist | Microsoft.
Adatbázis alapú rendszerek
Híd a Windows folyón Balint Farkas Technical Evangelist Microsoft
Farkas Bálint | Technical Evangelist | Microsoft
TechReady 22 6/25/2018 © 2015 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks.
Blockchain…de mi hajtja?
WS16 TP4 újdonságok Gál Tamás Budapest Sysadmin Meetup
Microsoft Azure Marketplace & Microsoft Azure Certified program
A nagyváradi villamosok megbízhatósági modellezése
„Agilis-e vagy?” – egy váltókezelő naplója
HWSW Meetup – Felhő és ami mögötte van
Build /24/2019 © 2015 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION.
Függvénysablonok használata
Előadás másolata:

Universal Windows Platform bevezető Mobil alkalmazások Universal Windows Platform bevezető

Irodalom és elérhető példaprogramok Universal Windows Platform Tech Ready 15 10/13/2018 Irodalom és elérhető példaprogramok Universal Windows Platform Visual Studio 2015 és a Blend Programok futtatása © 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Irodalom és elérhető példaprogramok © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Irodalom Windows 10 development for absolute beginners https://channel9.msdn.com/Series/Windows-10-development-for-absolute-beginners Kezdésnek nagyon jó XAML bevezetés egyes részeit át is lehet ugrani Elég sok témát körbejár és azokat részletesen bemutatja Készít komplexebb alkalmazásokat is A példaprogramok letölthetőek

Irodalom A Developer's Guide to Windows 10 https://mva.microsoft.com/en-US/training-courses/a-developers-guide-to-windows-10-12618?l=IV8HDBpRB_9005095281 Ugyanennek a régi változata: https://mva.microsoft.com/en-US/training-courses/a-developer-s-guide-to-windows-10-11341 Inkább az újdonságokra koncentrálnak, de mutatnak példákat is

Irodalom Microsoft által közzétett példaprogramok: https://github.com/Microsoft/Windows-universal-samples Folyamatosan frissítik Több mint 200 példa elég széles témakörben A projektek nem feltétlen működnek, de a forráskód és felület kódja így is elég hasznos

Irodalom Guide to Universal Windows Platform (UWP) apps: https://msdn.microsoft.com/hu-hu/library/windows/apps/dn894631.aspx

Universal Windows Platform 10/13/2018 7:44 AM Universal Windows Platform © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Universal Windows Platform Egységesített API (Application Programming Interface) Egy alkalmazás minden eszközön fusson

Sok API-t biztosítanak

Universal Windows Platform Fejleszthetünk univerzális alkalmazást is, ami minden platformon elvileg elfut, de van lehetőség csak egy adott platformra is fejleszteni Egységesített alkalmazásbolt is létrejött A korlátozással megakadályozzuk, hogy a lehető legtöbb felhasználót elérjük A különböző felületek létrehozásában segít az Adaptive UI

Windows app A fordítás során egyetlen bináris keletkezik, nincs külön platformokra fordítás

Visual Studio 2015 & Blend 10/13/2018 7:44 AM © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Visual Studio 2015 telepítése Fejlesztéshez a Visual Studio 2015 Enterprise változatát használjuk Letölthető a DreamSpark-ról Mindenkinek egyedi kulcsot kell generáltatni magának, nincs közös kulcs (Lab installer key) mint a 2013-as változat esetében Alapértelmezett beállításoknál nem kapjuk meg az UWP fejlesztéséhez szükséges eszközkészletet Ki kell választani a Universal Windows App Development Tools-t

Universal Windows App Development Tools

Blend Designer-eknek készült alkalmazás Korábban is létezett már Expression Blend néven WPF alkalmazásokat nem lehetett már a 4-es verzióval szerkeszteni Teljesen megújították, mivel gyakorlatilag a Visual Studio egy új ablakban való futtatását jelenti csak nem a megszokott kinézettel A programot innen is tudjuk futtatni és akár itt is elkezdhetjük az alkalmazás fejlesztését Lehetővé teszi ő is, hogy különböző méretű képernyőkön megtekintsük az elkészült felületet

Blend A megnyitásához a Visual Studio-ban ki kell választani a design-olni kívánt elemet (xaml állományt), majd Design in Blend-et kell választani

Blend

Visszatérés Visual Studio-ba Visual Studio észreveszi, hogy változás történt az egyik fájlban

10/13/2018 7:44 AM Első alkalmazás © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Blank app Üres alkalmazást hozhatunk létre Nincs itt egy példa, hogy ne legyen minden alkalmazás egyforma

Helyi gépen való futtatás Windows 10 esetében lehetséges helyi gépen való futtatás Ezt a funkciót engedélyezni kell

Helyi gépen való futtatás Az alábbi beállítást keressük meg

Helyi gépen való futtatás Engedélyezzük a fejlesztői lehetőségeket

Projektfájl Project.json Beállíthatjuk, hogy a csomaggal milyen függőségekkel (dependencies) érkezzen, hol futhat (runtimes) és milyen keretrendszert használ (frameworks) Nem kell kézzel módosítani, mert ha NuGet-ből hozzáadunk egy csomagot az itt tárolódik

Package.appxmanifest

Package.appxmanifest

Package.appxmanifest

Programok futtatása 10/13/2018 7:44 AM © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Futtatás szimulátoron Helyi gépen való futtatáson túl rendelkezésre állnak Windows Phone emulátorok is Különböző képernyőmérettel és memóriával rendelkező eszközökön tesztelhetünk

Futtatás szimulátoron IoT eszközök (pl.: Raspberry Pi 2) való futtatás esetében a Remote Machine-t kell választani, valamint a beállításoknál meg kell adni az eszköz IP címét

Futtatás szimulátoron Mellékhatása, hogy Hyper-V-t használ, ami a többi szimulációs technológiát letiltja Előtte azért rákérdez mielőtt elindítaná a virtuális gépet Egyszerre akár több is futhat belőle (ha van elég erőforrásunk)

Futtatás szimulátoron

Futtatás az eszközön Ha a Device-t kiválasztva szeretnénk futtatni az eszközön az alábbi hibát kaphatjuk

Futtatás az eszközön Windows 10-et futtató telefonon futtatni tudjuk az UWP alkalmazásunkat Telefonon való futtatáshoz developer unlock-olni kell a telefont Ehhez kell egy microsoft id (régen live id) A license $19 egyéni fejlesztőknek, cégeknek $99 Ha diákok vagyunk és az email címünk regisztrálva van a DreamSpark-ban akkor ingyenes és 2-3 alkalmazást fel tudunk tenni így a készülékre

Készülék beállításai A készüléknél fontos, hogy a futtatás előtt a képernyő fel legyen oldva, ellenkező esetben nem kerül telepítésre az alkalmazást Jól legyen beállítva a dátum és idő a telefonon

Telefon regisztrálása Windows Phone Developer Registration programmal tudjuk regisztrálni a készüléket Internet kapcsolat szükséges

Telefon regisztrálása

Telefon regisztrálása Ha minden jól ment sikeresen regisztrálva lett a készülékünk

10/13/2018 7:44 AM Egyéb © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Támogatott operációs rendszerek Windows 10 „Legjobb élményt adja” az universal alkalmazások létrehozásához Szimulátoron, helyi gépen, stb. lehet futtatni az alkalmazásunkat Windows 8.1 Kevesebb helyen próbálhatjuk ki az alkalmazást (pl.: nincs helyi gépen való futtatás) Windows 7 Nincs emulátor Nincs Hyper-V támogatás Eszközön való futtatás ettől még lehetséges

Projekt template-ek Üres alkalmazás (Blank app) Visual C# -> Windows -> Windows Universal -> Black App (Windows Universal) Class library-ben tárolhatjuk a kódunk egy részét Megfelelően megtervezett programnál ez elvárható Shared project Hasonlóan lehet felfogni mint a class library projektet viszont itt nem készül külön szerelvény, hanem a futtatható projektünkbe bemásolódik az ide elhelyezett kód Pl. ezt használja a Xamarin is, amivel C# nyelven lehet írni Android és iOS alkalmazást is, a közös kódbázist pedig shared project-ekbe tárolja Unit test app Egységteszt az UWP alkalmazásokhoz

Live Visual Tree A futó alkalmazásban az összes látható elemet megjeleníti Tudunk keresni név alapján az elemek között Ha valami nem töltődik be frissíteni lehet a fát (Refresh) A csomópontokat össze lehet húzni és szétnyitni attól függően mit szeretnénk látni

Live Visual Tree Ha kiválasztunk egy elemet arra jobb klikk és megnézhetünk a XAML kódját Preview selection gombra megyünk akkor ha kiválasztok egy elemet a fában akkor a XAML-ben is odaugrik

Live Visual Tree Enable selection: kiválaszthatjuk az egyes elemeket a futó alkalmazások felületén

Live Visual Tree Layout adomers: ha az enable selection is be van kapcsolva akkor megmutatja az elemek méretét (kékkel) és margin értékét (sárgával)

Live Property Explorer Ha kiválasztunk egy elemet azok tulajdonságait is megmutatja azonnal Így kideríthető miért lett mondjuk a gomb színe piros, ami nem biztos, hogy a designer-ből előjön, stílusok jöhetnek sokféle helyről A tulajdonságra jobb klikk és annak forrásához is el lehet jutni Hol van pl. beállítva a háttérszín Menet közben tudjuk változtatni egy tulajdonság értékét, ami azonnal megjelenik a felületen Pl.: Grid sorának magasságát

Live Property Explorer Új tulajdonságot is hozzáadhatunk A változtatásokat vissza lehet állítani Adatkötésből származó hibák felderítése Live Visual Tree-nél kiválasztjuk az element selector-t és odaugrunk a XAML-ben Utána a tulajdonságoknál keressük a DataContext-et és láthatjuk milyen nevű elemek vannak hozzákötve Ha nem látjuk ezeket az ablakokat akkor a Debug -> Windows helyen megtaláljuk

Profiling eszközök Erőforrások vizsgálatára tudjuk használni (CPU, RAM, hálózat) Így indítsuk az alkalmazást: Debug -> Start Diagnostic tools without debugging..

10/13/2018 7:44 AM XAML vezérlők © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Layout vezérők <Border Thickness="" Brush="" /> <Canvas /> WinHEC 2015 10/13/2018 7:44 AM Layout vezérők <Border Thickness="" Brush="" /> <Canvas /> <Grid /> <RelativePanel /> <ScrollViewer /> <SplitView DisplayMode="" /> <StackPanel Orientation="" /> <VariableSizedWrapGrid /> <ViewBox Stretch="" /> ViewBox: a benne eltárolt tartalmat egy meghatározott méretre felnagyítja © 2015 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Canvas WinHEC 2015 10/13/2018 7:44 AM Alap rajzol © 2015 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

StackPanel WinHEC 2015 10/13/2018 7:44 AM Elhelyez fenntről és lesz © 2015 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Grid WinHEC 2015 10/13/2018 7:44 AM Sor oszlop © 2015 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

WrapGrid WinHEC 2015 10/13/2018 7:44 AM Sor oszlop átrak © 2015 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

ScrollViewer WinHEC 2015 10/13/2018 7:44 AM Görgetős © 2015 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

WinHEC 2015 10/13/2018 7:44 AM ViewBoxv Igazytja amihez kell hogy látja © 2015 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

RelativePanel A gyermek elemek egy része horgonyként (anchor) viselkedik A benne található elemek elhelyezkedése más elemektől függenek, illetve az őket tartalmazótól Vizuális állapotokkal (később szó lesz róla) együtt jól használható

Nyomógombok <Button Content="" /> <HyperlinkButton /> <RepeatButton /> <ToggleButton IsChecked="" />

Szöveget megjelenítő vezérlők <TextBox Text="" /> <PasswordBox Text="" /> <TextBlock Text="" /> <RichEditBox Content="" /> <RichTextBlock Content="" /> <BitmapIcon UriSource="" /> <FontIcon Glyph="" /> <SymbolIcon Icon="" /> <PathIcon Data="" />

Választó elemek <CalendarView /> <DatePicker Date="" /> <TimePicker Time="" /> <ToggleSwitch IsChecked="" /> <CheckBox IsChecked="" /> <RadioButton IsChecked="" /> <ComboBox /> <ListBox /> <Slider Minimum="" Maximum="" />

Kollekciótípusok/adatvezérlők WinHEC 2015 10/13/2018 7:44 AM Kollekciótípusok/adatvezérlők <ItemsControl ItemsSource="" /> <FlipView /> <GridView /> <ListView /> <SematicZoom /> <Hub Orientation="" /> <ContentControl ControlTemplate="" /> <DataTemplate /> <ItemsPanelTemplate /> <ControlTemplate /> <ContentPresenter /> <ItemsPresenter /> <ContentControl /> DataTemplate: egy adat objektum vizuális struktúráját írja le ItemsPanelTemplate: pl.: olyan ListBox-ot szeretnénk, ahol nem vertikálisan hanem horizontálisan lesznek rendezve az elemek ControlTemplate: egy vezérlő vizuális struktúráját definiálja; ezzel lehet saját kinézetű vezérlőket létrehozni ContentControl: olyan vezérlő, ami egy másik vezérlőt tartalmaz ContentPresenter: vezérlő Content tulajdonsága állítható egy saját kinézet leírásánál; a helyet foglalja a tartalomnak ItemsPresenter: lényegében ugyanaz, mint az előző csak ItemsControl-tól öröklődő vezérlőkre vonatkozik, ahol van Items tulajdonság; tehát az elemek tartalmának megjelenítésért felel © 2015 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

GridView

ListView

FlipView

App bar és Command bar <AppBar /> <CommandBar /> <AppBarButton Label="" Icon="" /> <AppBarToggleButton IsChecked="" /> <AppBarSeparator />

10/13/2018 7:44 AM Blend © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Designer felület A kiválasztott felületet láthatjuk középen XAML kód is elérhető

Solution Explorer Projekthez tartozó fájlokat láthatjuk, ugyanúgy mint a Visual Studio esetében

Assets Felületre elhelyezhető vezérlők, alkalmazható stílusok, viselkedések, alakzatok, képek, stb.

Visual States Vizuális állapotok, pl.: mobile, tablet, desktop Ha piros pötty megjelenik a vizuális állapot mellett akkor az összes változást megjegyzi az adott állapothoz

Data DataContext-hez adatforrás beállítása

Object and Timeline Adott XAML felülethez tartozó elemek (vizuális fa) Itt lehet létrehozni animációt is

Properties A kiválasztott objektum tulajdonságai

10/13/2018 7:44 AM SQLite browser © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

SQLite adatbázis létrehozása Adatbázis létrehozására két lehetőségünk van: C# kódból létrehozzuk az első induláskor az adatbázist (pl.: App.xaml.cs OnLaunched függvényében) Egy előre létrehozott adatbázis struktúrát mellékelünk a programhoz és azt átmásoljuk az első indításkor az írható/olvasható tárterületre Utóbbi lehetőség jobb megoldás bonyolultabb adatbázis szerkezet esetén Ettől függetlenül a táblákat reprezentáló osztályokat ebben az esetben is létre kell (legalábbis nagyon ajánlott) hozni Alapértelmezetten az sqlite.org-tól csak egy parancssoros felületet kapunk, viszont kiegészíthetjük más gyártótól való grafikus alkalmazással

WinHEC 2015 10/13/2018 7:44 AM SQLite browser Grafikus felületet biztosít az SQLite relációs adatbázis létrehozásához http://sqlitebrowser.org/ Természetesen lehet használni más grafikus alkalmazást is az SQLite-hoz. © 2015 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Adattípusok SQLite v3-ban Gyengén típusos Minden oszlop tud bármilyen típust tárolni, de ajánlott megadni milyen típust használunk Adattípusok: NULL INTEGER – előjeles egész szám, 1, 2, 3, 4, 6, vagy 8 bájton tárolhatunk vele számokat REAL – 8 bájtos IEEE lebegőpontos számábrázolás TEXT – szöveg tárolása UTF-8, UTF-16BE vagy UTF-16LE kódolással BLOB – komplex adatok tárolása

Adattípusok SQLite v3-ban Boolean érték tárolása Nincs külön erre kialakított típus Megoldásként használjunk INTEGER típus, ahol 0 tárolja a hamis, 1 pedig az igaz értéket Dátum és idő típus Megoldások: TEXT: ISO8601 szabvány szerinti szöveg ("YYYY-MM-DD HH:MM:SS.SSS") REAL: INTEGER: 1970-01-01 00:00:00 UTC óta eltelt idő másodpercben

SQLite browser bemutatása Példa: bevásárló lista 7 tábla Több 100 rekord 5 külső kulcs Példa: Szótár 3 tábla

10/13/2018 7:44 AM SQLite PCL © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

ORM és PCL összehasonlítás SQLite-NET LINQ, lightweight ORM SQLitePCL SQL, C API using (var conn = new SQLiteConnection("demo.db")) {      Customer customer = null; using (var statement = conn.Prepare( "SELECT Id, Name FROM Customer WHERE Id = ?")) { statement.Bind(1, customerId); if (SQLiteResult.DONE == statement.Step()) { customer = new Customer() { Id = (long)statement[0], Name = (string)statement[1] }; } var db =  new SQLite.SQLiteAsyncConnection(App.DBPath); var _customer = await  (from c in db.Table<Customer>() where c.Id == customerId  select c).FirstOrDefaultAsync(); if (customer != null) {      var Id = _customer.Id;      var Name = _customer.Name;      }

Bővítmény telepítése VS 2015 -> Tools -> Extensions and update -> keressünk erre (Online kategória): sqlite-uap -> Download/Install -> VS 2015 újraindítása

SQLite PCL hozzáadása a projekthez References -> Manage NuGet Packages

SQLite PCL hozzáadása a projekthez Jobb klikk a References-re -> Add Reference

SQLite PCL Az SQLite PCL egy vékony wrapper-t jelent az SQLite ‚C’ API-ja felett Az adatbázissal SQL utasítások segítségével tudunk kommunikálni, amely parancsokat szövegként tudunk megadni

Adatbázis és táblák létrehozása private void LoadDatabase() { // Get a reference to the SQLite database conn = new SQLiteConnection("sqlitepcldemo.db"); string sql = @"CREATE TABLE IF NOT EXISTS Customer (Id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, Name VARCHAR( 140 ), City VARCHAR( 140 ), Contact VARCHAR( 140 ) );"; using (var statement = conn.Prepare(sql)) { statement.Step(); } }

Új sor hozzáadása // SqlConnection was opened in App.xaml.cs and exposed through property conn var db = App.conn; try { using (var custstmt = db.Prepare("INSERT INTO Customer (Name, City, Contact) VALUES (?, ?, ?)")) { custstmt.Bind(1, customerName); custstmt.Bind(2, customerCity); custstmt.Bind(3, customerContact); custstmt.Step(); } } catch (Exception ex) { // TODO: Handle error }

Lekérdezés public Customer GetCustomer(int customerId) { Customer customer = null; using (var statement = dbconn.Prepare("SELECT Id, Name, City, Contact FROM Customer WHERE Id = ?")) { statement.Bind(1, customerId); if (SQLiteResult.DONE == statement.Step()) { customer = new Customer() { Id = (long)statement[0], Name = (string)statement[1], City = (string)statement[2], Contact = (string)statement[3] }; } } return customer; }

Módosítás // See if the customer already exists var existingCustomer = GetCustomer(customer.Id); if (existingCustomer != null) { using (var custstmt = dbconn.Prepare("UPDATE Customer SET Name = ?, City = ?, Contact = ? WHERE Id=?")) { // NOTE when using anonymous parameters the first has an index of 1, not 0. custstmt.Bind(1, customer.Name); custstmt.Bind(2, customer.City); custstmt.Bind(3, customer.Contact); custstmt.Bind(4, customer.Id); custstmt.Step(); } }

Törlés public void DeleteCustomer(int customerId) { using (var statement = dbconn.Prepare("DELETE FROM Customer WHERE Id = ?")) { statement.Bind(1, customerId); statement.Step(); } }

Tranzakciók ACID elvek A tranzakción belül megadott összes parancs végrehajtódik vagy egyik sem SQLite PCL esetében BEGIN TRANSACTION paranccsal indíthatjuk a tranzakciót A tranzakció addig tart, amíg ki nem adjuk a COMMIT TRANSACTION vagy a ROLLBACK TRANSACTION-t Ha simán bezárjuk az adatbázist a rollback fog végrehajtódni

Manuális tranzakció using (var statement = dbconn.Prepare("BEGIN TRANSACTION")) { statement.Step(); } // Execute one or more statements… using (var custstmt = dbconn.Prepare( "INSERT INTO Customer (Name, City, Contact) VALUES (?, ?, ?)")) { ... } using (var projstmt = dbconn.Prepare( "INSERT INTO Project (Name, Title, DueDate, CustomerId) VALUES (?, ?, ?, ?)")) { ... } // COMMIT to accept all changes or ROLLBACK TRANSACTION to discard pending changes using (var statement = dbconn.Prepare("COMMIT TRANSACTION")) { statement.Step(); }

Külső kulcs megszorítás létrehozása CREATE TABLE utasításban kell megadni Utólagos létrehozásnál ALTER TABLE-t kell használni CREATE TABLE IF NOT EXISTS Project  (Id          INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,       CustomerId  INTEGER,              Name        VARCHAR( 140 ),                 Description VARCHAR( 140 ),                        DueDate     DATETIME,             FOREIGN KEY(CustomerId) REFERENCES Customer(Id)               );

Külső kulcs megszorítások kikényszerítése A külső kulcs megszorítások definiálása a táblákon nem elegendő, mivel a külső kulcs megszorítások alapértelmezetten le vannak tiltva (a visszafelé való kompatibilitás miatt) Engedélyezhető a futás időben a PRAGMA paranccsal // Turn on Foreign Key constraints   sql = @"PRAGMA foreign_keys = ON"; using (var statement = dbconn.Prepare(sql)) { statement.Step(); }

Egyéb megszorítások Type Description SQLite-NET PRIMARY KEY Defines the column(s) of the primary key - 1 per table max Declare by using [PrimaryKey] attribute UNIQUE Column constraint enforces unique values in that column Declare by using [Unique] attribute NOT NULL Column constraint prevents null values No way of declaring with SQLite.NET CHECK Column or Table constraint: constraint expression is evaluated on every insert or update, and if ‘0’ returned, constraint fails További információ itt érhető el: http://sqlite.org/lang_createtable.html

Index-ek A táblák elsődleges kulcsaihoz (PRIMARY KEY-vel jelölt oszlopok) automatikusan létrejön index // Create index on Foreign Key column   sql = @"CREATE INDEX IF NOT EXISTS fk_customer_project_idx  ON project (customerId) ASC"; using (var statement = dbconn.Prepare(sql)) { statement.Step(); }

10/13/2018 7:44 AM SQLite.NET © 2014 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

SQLite.NET Objektum-orientáltan tudjuk kezelni az SQL adatbázisunkat (ORM) Beégetett SQL utasítások helyett függvényeket és linq lekérdezéseket használhatunk A függvényeknek létezik aszinkron változata is

Adatbázis létrehozása public bool CreateDatabase() { try using (var db = new SQLite.SQLiteConnection(_databasePath)) // tábla létrehozása var t = db.CreateTable<Todo>(); var tableinfo = db.GetMapping(typeof(Todo)); Debug.WriteLine("tableinfo" + tableinfo); return true; } catch (SQLite.SQLiteException exception) Debug.WriteLine("SQLiteException exception: " + exception.Message); return false;

Lekérdezések (összes elem lekérdezése) public IEnumerable<Todo> GetAllTodo() { using (var db = new SQLite.SQLiteConnection(_databasePath)) return (from t in db.Table<Todo>() select t).ToList(); }

Alacsony szintű lekérdezés public IEnumerable<Todo> LowLevelQuery() { using (var db = new SQLite.SQLiteConnection(_databasePath)) return db.Query<Todo>("SELECT * FROM Todo"); // List<Todo>-t ad vissza }

Hozzáadás public bool InsertTodo(Todo todo) { try using (var db = new SQLite.SQLiteConnection(_databasePath)) var insertinfo = db.Insert(todo); Debug.WriteLine("insertinfo" + insertinfo); return true; } catch (SQLite.SQLiteException exception) Debug.WriteLine("SQLiteException exception: " + exception.Message); return false;

Módosítás public bool UpdateTodo(Todo todo) { try using (var db = new SQLite.SQLiteConnection(_databasePath)) var updateinfo = db.Update(todo); Debug.WriteLine("updateinfo" + updateinfo); return true; } catch (SQLite.SQLiteException exception) Debug.WriteLine("SQLiteException exception: " + exception.Message); return false;

Törlés public bool DeleteTodo(Todo todo) { try using (var db = new SQLite.SQLiteConnection(_databasePath)) var updateinfo = db.Delete(todo); Debug.WriteLine("updateinfo" + updateinfo); return true; } catch (SQLite.SQLiteException exception) Debug.WriteLine("SQLiteException exception: " + exception.Message); return false;

Példa Demo: SQLiteDotNet

SQLite-ot használó keretrendszerek Azure App Service Mobile Apps Entity Framework 7 01010 00100 10110 00100

Irodalomjegyzék A Developer's Guide to Windows 10 https://mva.microsoft.com/en-US/training-courses/a-developer-s-guide-to-windows-10-11341