Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Universal Windows Platform bevezető

Hasonló előadás


Az előadások a következő témára: "Universal Windows Platform bevezető"— Előadás másolata:

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

2 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.

3 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.

4 Irodalom 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

5 Irodalom A Developer's Guide to Windows 10
Ugyanennek a régi változata: Inkább az újdonságokra koncentrálnak, de mutatnak példákat is

6 Irodalom Microsoft által közzétett példaprogramok:
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

7 Irodalom Guide to Universal Windows Platform (UWP) apps:

8 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.

9

10

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

12 Sok API-t biztosítanak

13 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

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

15 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.

16 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

17 Universal Windows App Development Tools

18 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

19 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

20 Blend

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

22 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.

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

24 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

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

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

27

28 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

29 Package.appxmanifest

30 Package.appxmanifest

31 Package.appxmanifest

32 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.

33 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

34 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

35 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)

36 Futtatás szimulátoron

37 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

38 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 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

39 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

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

41 Telefon regisztrálása

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

43 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.

44 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

45 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

46 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

47 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

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

49 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)

50 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

51 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

52 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..

53 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.

54 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.

55 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.

56 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.

57 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.

58 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.

59 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.

60 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.

61 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ó

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

63 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="" />

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

65 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.

66 GridView

67 ListView

68 FlipView

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

70 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.

71

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

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

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

75 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

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

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

78 Properties A kiválasztott objektum tulajdonságai

79 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.

80 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

81 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 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.

82 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

83 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: :00:00 UTC óta eltelt idő másodpercben

84 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

85 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.

86 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;      }

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

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

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

90 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

91 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 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(); } }

92 Ú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 }

93 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; }

94 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  custstmt.Bind(1, customer.Name); custstmt.Bind(2, customer.City); custstmt.Bind(3, customer.Contact); custstmt.Bind(4, customer.Id); custstmt.Step(); } }

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

96 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

97 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(); }

98 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)               );

99 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   using (var statement = dbconn.Prepare(sql)) { statement.Step(); }

100 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:

101 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   INDEX IF NOT EXISTS fk_customer_project_idx  ON project (customerId) ASC"; using (var statement = dbconn.Prepare(sql)) { statement.Step(); }

102 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.

103 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

104 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;

105 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(); }

106 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 }

107 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;

108 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;

109 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;

110 Példa Demo: SQLiteDotNet

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

112 Irodalomjegyzék A Developer's Guide to Windows 10


Letölteni ppt "Universal Windows Platform bevezető"

Hasonló előadás


Google Hirdetések