, en introduktion til xamarin. former og sqlite,,,,, 59,,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, på et tidspunkt i din mobil udvikling karriere, du er nødt til at behandle data.behandle data, betyder mere end forarbejdning og visning af oplysninger til slutbrugeren.du er nødt til at opbevare disse oplysninger et sted og være i stand til at få det let.tak til xamarin og open source software, du nemt kan opbevare data med en industri, testet platform, sqlite.,,, 1. lagring af data, så hvorfor har du brug for at tænke på data, når det gælder din app?fordi det er alle omkring dig.du kan ikke flygte fra det.uanset hvilken app, du skriver, hvad enten det er et spil eller en slags nytteværdi, du er nødt til at lagre data på et tidspunkt.disse data kan være bruger data, statistikker, eller noget andet af interesse, enten dig eller brugeren vil være interesseret i på et tidspunkt i brugen af din app.,, på dette punkt, så lad os antage, at du har besluttet at tage de xamarin. former vej, fordi du er interesseret i, at ikke flere platforme kun i logikken i din app, men også for brugergrænsefladen lag. fint.men hvad gør du nu, at du er nødt til at opbevare oplysninger i din app?bare rolig, der er en meget enkel løsning på dette problem, sqlite., 2. introduktion til sqlite,, og nu har de set udtrykket sqlite et par gange i denne forelæsning, det er tid til at komme ned til kød.hvad er sqlite?sqlite er en offentlig, nul konfiguration, transaktionsbaseret sql database motor.dette er ensbetydende med, at du har en fuld spillet en mekanisme til at opbevare data på en struktureret måde.ikke kun får du alt det, du har også adgang til kildekoden, , fordi den er åben kilde.,, vil vi ikke være, som dækker alle de aspekter af sqlite i denne forelæsning, blot fordi der er for mange til at gå igennem.de kan være forvisset om, at du vil have mulighed for at kunne skabe en tabel struktur til at lagre data og hente det i din app.disse er de begreber, som vi vil fokusere på i denne forelæsning.,,, i en verden med xamarin. former, sqlite er et naturligt af en meget enkel årsag.den sqlite motor er umiddelbart tilgængelig for såvel programmerbare og androide.det betyder, at du kan bruge denne teknologi ud af boksen, når man vælger at skrive en xamarin. former app.,, at få adgang til sqlite funktionalitet i vinduerne telefon apps kræver en yderligere skridt, som vi vil gå forbi lidt senere.alle disse funktioner og tværgående platform adgang er fint, men hvordan får vi adgang til de indfødte platform gennemførelse fra vores ckode i xamarin. former.fra en god nuget pakke, det er sådan.lad os tage et kig.,, 3. skaber en app, lad os starte ved at skabe en enkel xamarin. former anvendelse.i denne forelæsning, vil jeg bruge en mac løber xamarin studie, men du kan lige så godt bruge xamarin studie - eller visuel studie på en pc.,, trin 1, skabe et projekt, vi indleder en proces med at skabe en ny xamarin. former app.for at gøre dette, kun udvælge , mobile applikationer, projekt model familie på venstre - og vælge en af de xamarin. former skabeloner til højre.du kan bruge den, pcl, eller deles, version af modellen, men i dette tilfælde, vil jeg bruge den, pcl,.du kan følge enten ved hjælp af en, men der vil være en lille forskel, hvis du vælger det, delte, skabelon senere.,,,,, kan du give projektet et navn, du kan lide.jeg vil ringe til dette projekt , introtosqlite,. efter du knipser de , okay, din ide, vil gå igennem processen med at skabe din løsning.din løsning indeholder fire projekter:,, introtosqlite - pcl - projektet, introtosqlite.android - androiden projekt, introtosqlite.ios - six - projektet, introtosqlite.winphone - vinduer telefon - projektet (kun på en pc), trin 2: tilføje sqlite støtte, nu, hvor vi har vores grundlæggende projekt struktur, der er oprettet, kan vi begynde at tilføje, adgang til sqlite vores pcl - projekt.vi har brug for til at installere en ny pakke ind i vores projekt ved navn sqlite.net.det er et spil. indpakning omkring sqlite, der vil give os mulighed for at få adgang til lokalt sqlite funktioner fra en xamarin. former pcl - eller fælles projekt.,, vi adgang til nuget pakke af lige klikke på enten , pakninger eller , referencer, afhængigt af, hvilken ide du bruger, og udvælge , tilføje pakke (eller , reference).i søgningen kasse, type, sqlite. net.dette vil vise dig en stor samling af kolli, som du kan tage med i deres projekt.,,,,,, da jeg valgte at gå pcl vej til xamarin. former - projektet, er jeg nødt til at vælge , sqlite.net pcl, pakke kommer til at omfatte mit projekt.hvilken en vil du vælge, hvis du tog det fælles projekt rute?ingen.,, sqlite og fælles projekter, hvis de har valgt den fælles projekt model tidligere i ministeriet, du kan tænke over, hvordan man får adgang til sqlite pakke.det korte svar er, at det kan du ikke. hvis du kan huske det fra en tidligere lektion, jeg kan ikke tilføje henvisninger til et fælles projekt.for at få adgang til sqlite fra et fælles projekt, du blot tilføje kildekoden til projektet.,, tilføje en kode, det sidste skridt, at sqlite funktioner til pcl - projektet er at skabe en grænseflade, der vil give os adgang til sqlite verden.grunden til, at vi gør dette, fordi vi har brug for at få adgang til de indfødte funktioner på forskellige platforme, som vi så det i en tidligere tutor.,, lad os begynde med at definere en grænseflade, der vil give os adgang til sqlite database forbindelse.i din pcl - projektet, skabe en ny grænseflade, der hedder , isqlite, og i stedet for gennemførelsen af følgende:, ved hjælp af systemet ved hjælp af sqlite. net; namespace introtosqlite (offentlig grænseflade isqlite {sqliteconnection getconnection();}}, er dette den grænseflade, som vi vil gennemføre, og få adgang til via, dependencyservice fra de indfødte implementeringer.,, trin 3: at definere den database, har vi nu adgang til sqlite funktionalitet, lad os definere vores database.denne ansøgning skal være enkel, og vi er bare opbevarer nogle af vores tilfældige tanker, som vi kommer op med dem, starter vi med at skabe en klasse, der repræsenterer de data, der er lagret i en særlig tabel.lad os kalde denne klasse ,,, randomthought,.,, ved hjælp af systemet ved hjælp af sqlite.net.attributes; namespace introtosqlite {offentlige klasse randomthought ([primarykey, autoincrement] offentlige int id (få; der;} offentlige snor troede {få; der;} offentlige datetime createdon {få;, offentlige randomthought () {}}}}, som du kan se, er dette en meget simpel klasse med tre egenskaber.to af disse egenskaber er bare din normale daglige egenskaber, , troede, og createdon,.disse to egenskaber skal repræsentere kolonner i sqlite database, som vil indeholde en oversigt, der hedder, randomthought,. tredje ejendom, id, vil også udgøre en kolonne i tabellen, og som indeholder en unik id - kort, som vi kan bruge til at henvise til en specifik, randomthought, række i tabellen. det interessante ved, id, ejendom, er, at det er dekoreret med to attributter, , primarykey, og autoincrement,., primarykey, fortæller sqlite, at denne kolonne skal være den primære nøgle på bordet, hvilket betyder, at der ved misligholdelse, skal det være enestående, og der er et indeks, der anvendes til at fremskynde hentning af denne tabel, når der henvises til en række af denne kolonne.,,, autoincrement, betyder, at når vi indsætter en ny, randomthought, i denne tabel, id, kolonne udfyldes automatisk med den næste til rådighed hele tal.det næste skridt er at skabe denne tabel i databasen,.,, jeg gerne skabe en klasse, der repræsenterer min database og holde alle logik adgang til databasen og dens tabeller i denne klasse.for det, jeg vil skabe en klasse, der hedder, randomthoughtdatabase:, ved hjælp af systemet ved hjælp af sqlite. net; med xamarin. former; anvendelse af system.collections.generic; anvendelse af systemet. linq; namespace introtosqlite {offentlige klasse randomthoughtdatabase (private sqliteconnection _connection; offentlige randomthoughtdatabase () (_connection = dependencyservice. få < isqlite > (). getconnection (); _connection. createtable < randomthought > c);} offentlige ienumerable < randomthought > getthoughts() {afkast (fra t i _connection. tabel < randomthought > c) udvælge t). tolist ();} offentlige randomthought getthought (int id) {tilbage _connection. tabel < randomthought > (). firstordefault (t = > t.id = = id)} offentlige tomrum deletethought int (id) (_connection. slette < randomthought > (id)} offentlige tomrum addthought (string troede) (var - newthought = nye randomthought {troede = troede, createdon = datetime. nu}; _connection.insert (newthought)}}}, er dette en meget enkel gennemførelse, som det indeholder kun få metoder.det er typisk for nogle af de grundlæggende operationer, de udfører, når det drejer sig om en database. et punkt at bemærke entreprenøren.inden for producenten, vi gør to ting. først, vi bruger, dependencyservice, fag for at få registreret klasse, der gennemfører, isqlite, grænseflade og ringe til sin , getconnection metode.,,, vi bruger, createtable, metoden, sqliteconnection, klasse for at skabe en tabel kaldet, randomthought,.denne metode vil skabe den tabel, hvis det ikke allerede findes, og ud yndefuldt, hvis den allerede findes.,, selvfølgelig, du kan få så sofistikeret med denne klasse, som du vil, ved at lægge alle mulige funktioner, men disse transaktioner typisk er et godt udgangspunkt.,, trin 4: tilføje den programmerbare gennemførelse, de fleste af den kode, som vi bruger til at interagere med databasen vil blive fundet i pcl (eller delt) projekt.men vi mangler stadig at gøre en lille ledninger i den oprindelige gennemførelse for at få alt fungerer korrekt, er den største hindring, som vi er nødt til at arbejde på de indfødte side, når de bruger sqlite er, hvor vi skal opbevare den faktiske database fil.dette adskiller sig fra platform til platformen.her er, hvad vi har brug for six.,, før vi kan tilføje enhver form for sqlite funktioner til den programmerbare projekt, er vi nødt til at tilføje, sqlite.net pcl, samt , sqlite.net pcl - xamarinios platform, pakker til dette projekt.du kan følge de samme trin som du tog i, trin 2, at sikre, at tilføje til projektet.når du har tilføjet denne pakke, kan man begynde at skrive nogle sqlite kode i den programmerbare projekt.,, lad os skabe en gennemførelse af det, isqlite, grænseflade til six.start ved at skabe en ny klasse, og jeg nævner det, sqlite_ios,.,, ved hjælp af systemet ved hjælp af system.io; anvendelse af sqlite; anvendelse af introtosqlite.ios; anvendelse af xamarin. former; [forsamling: afhængighed (type (sqlite_ios))] namespace introtosqlite.ios {offentlige klasse sqlite_ios: isqlite {offentlige sqlite_ios () {}region isqlite offentlige sqlite.net.sqliteconnection gennemførelse getconnection () (var - filnavn = "randomthought. db3" var documentspath = environment.getfolderpath (miljø. specialfolder. personlige) var librarypath = vej. kombinere (documentspath "...", "bibliotek") var sti = vej. kombinere (librarypath, filnavn) var platform = nye sqlite.net.platform.xamarinios.sqliteplatformios () var. connectii = nye sqlite.net.sqliteconnection (platform, vej); tilbage forbindelse;}endregion}}, får vi adgang til den korrekte placering opbevarer den database, dokumentation, skabe en ny, sqliteconnection, genstand, og send det tilbage til vores pcl (eller delt) projekt.parlamentet lægger på toppen af den fil, er anvendt til at identificere denne klasse som en afhængighed, der kan hentes via, få, metoden, dependencyservice, klasse.,, løntrin 5: tilføje androiden gennemførelse, er dette skridt meget ligner den foregående.den eneste forskel er, at kodeksen vil ændre lidt på grund af den kendsgerning, at placeringen af databasen fil vil være anderledes.du vil stadig have behov for at tilføje de nødvendige midler til androiden projekt (, sqlite.net pcl, og , sqlite.net pcl - xamarinandroid, som du gjorde før.når du har fuldført det, kan du tilføje den relevante kode i en ny klasse, der hedder, sqlite_android,.,, ved hjælp af systemet ved hjælp af system.io; anvendelse af xamarin. former; anvendelse af introtosqlite. androide; [forsamling: afhængighed (type (sqlite_android))] namespace introtosqlite. androide {offentlige klasse sqlite_android: isqlite {offentlige sqlite_android () {}region isqlite gennemførelse offentlige sqlite.net.sqliteconnection getconnection () (var - filnavn = "randomthought. db3" var documentspath = environment.getfolderpath (miljø. specialfolder. personlige) var sti = vej. kombinere (documentspath, filnavn) var platform = nye sqlite.net.platform.xamarinandroid.sqliteplatformandroid () var forbindelse =.w sqlite.net.sqliteconnection (platform, vej); tilbage forbindelse;}endregion}}, du har nu en gennemførelse af isqlite grænseflade i lyset af deres androide app.,, trin 6: tilføje vinduerne telefon gennemførelse, da jeg løb en app fra mac, jeg vil ikke skabe - telefon gennemførelse, men hvis du ønsker at gøre det, du kan. det første skridt er at tilføje støtte til dine vinduer telefon projekt for sqlite.som nævnt tidligere, sqlite kommer ved misligholdelse af programmerbare og androide.det er ikke rigtigt for vinduer, telefon, men den er understøttet.få den monteret, kan du følge instruktionerne på xamarin websted.,,, efter montering af sqlite, processen med at tilføje de funktioner for vinduer telefon bliver næsten præcis det samme, bortset fra at de pakker til at installere, sqlite.net pcl, og sqlite.net pcl - windowsphone 8 platform. med disse pakker anbragt du kan skabe vinduerne ringe gennemførelse af, isqlite interface., ved hjælp af system, anvendelse af system.io; anvendelse af xamarin. former; anvendelse af introtosqlite.winphone; [forsamling: afhængighed (type (sqlite_winphone)] namespace introtosqlite.winphone {offentlige klasse sqlite_winphone: isqlite {offentlige sqlite_winphone () {}region isqlite offentlige sqlite.net.sqliteconnecti gennemførelsepå getconnection () (var - filnavn = "randomthought. db3" var sti = vej. kombinere (applicationdata.current.localfolder.path, filnavn) var platform = nye sqlite.net.platform.windowsphone8.sqliteplatformwp8 () var forbindelse = nye sqlite.net.sqliteconnection (platform, vej); tilbage forbindelse;}endregion}},, der har du det.nu har du alle dine indfødte implementeringer fuldstændigt.det er tid til at give denne app 'en brugergrænseflade og få dine data i databasen, trin 7: forøgelse af brugergrænsefladen,, da denne lektion er godt ind i emnet xamarin. former, vil jeg gå ud fra, at du i det mindste har en grundlæggende viden om xamarin.forms.med denne antagelse i tankerne, jeg vil ikke gå i detaljer om gennemførelsen af brugergrænsefladen.hvis du har brug for flere oplysninger om xamarin. former, tjek min anden xamarin. former tutorials på tuts +.,, brugergrænseflade skal bestå af to separate sider.den første side indeholder en liste over alle de tanker, vi har opført på en liste, og på den anden side vil lade brugeren træder ind i en ny tanke.lad os bygge disse sider, skabe listview, vil vi først fokusere på at skabe den første side, som vil indeholde en liste over, randomthought, genstande.start ved at skabe et nyt dossier i pcl (eller delt) projekt, og navnet på det, randomthoughtspage,.i stedet for misligholdelse gennemførelse med følgende:, ved hjælp af systemet ved hjælp af xamarin. former; namespace introtosqlite {offentlige klasse randomthoughtspage: contentpage (private randomthoughtdatabase _database; private listview _thoughtlist; offentlige randomthoughtspage (randomthoughtdatabase database) (_database = database; afsnit = "tilfældige tanker" var tanker = _database.getthoughts (); _thoughtlist = nye listview ('); _thoughtlist.itemssource = tanker; _thoughtlist.itemtemplate = nye datatemplate (type (textcell)); _thoughtlist.itemtemplate.setbinding (textcell.textproperty, "tænkte"); _thoughtlist.itemtemplate.setbinding (textcell.detailproperty "createdon"), var toolbaritem = nye toolbaritem {navn = "tilføjes", kommando = nye kommando (() = > navigation. pushasync (nye thoughtentrypage (denne database)))); toolbaritems.add (toolbaritem); indhold = _thoughtlist;} offentlige tomrum refresh() {_thoughtlist.itemssource = _database.getthoughts ();}}}, er de fleste af det arbejde, der er gjort i denne klasse er entreprenøren.producenten giver os mulighed for at gå i tilfælde af, randomthoughtsdatabase, til at få alle de reddede tanker.vi sætter, titel, tilhører den side til "tilfældige tanker", få fat i alle de eksisterende tanker, skabe en ny instans, listview, og skabe en, toolbaritem, som vil gøre det muligt for os at klikke på en knap til at få punktet side.vi har ikke gennemført endnu, men vi vil om kort tid, for at få vores nye, randomthoughtspage, op på skærmen, er vi nødt til at foretage en lille ændring til det, app.cs, fil.i denne sag, ændre, getmainpage, en metode til at ligne følgende:,, offentlige statiske side getmainpage () (var - database = nye randomthoughtdatabase (); tilbage nye navigationpage (nye randomthoughtspage (database)},,, getmainpage, metode resulterer i en ny instans, randomthoughtdatabase, klasse - og vender tilbage til en ny instans, randomthoughtspage,.med denne ændring, vores programmerbare og androide apps skal se sådan her:,,,,,,,, skabe punktet side, har vi nu en liste på side for os alle, randomthought, genstande, men vi har ikke en måde at komme nye.for det, vil vi skabe en anden side svarende til det foregående side.skabe et nyt dossier i din pcl (eller delt) projekt, og det er, thoughtentrypage,.i stedet for misligholdelse gennemførelse med følgende:, ved hjælp af systemet ved hjælp af xamarin. former; namespace introtosqlite {offentlige klasse thoughtentrypage: contentpage (private randomthoughtspage _parent; private randomthoughtdatabase _database; offentlige thoughtentrypage (randomthoughtspage forælder, randomthoughtdatabase database) (_parent = forældre; _database = database; afsnit = "ind i en tanke" var indrejse = ny post () var knap = nye knap {tekst = "tilføjes"}; button.clicked + = async (objekt afsender, eventargs e) = > (var - troede = indrejse. tekst; _database. addthought (troede); afventer navigation. popasync(); _parent. refresh();}; indhold = nye stacklayout (afstand = 20, polstring = nye tykkelse (20), børn = (indrejse, knap}}}}}, i denne klasse, arbejdet er gjort inden for den pågældende.vi får en henvisning til den forælder, side, randomthoughtspage, samt databasen.resten er grundlæggende fælde kode med en angivelse, genstand for optagelse af tekst og en knap,.,, når brugeren haner, button, bruger vi den database at tilføje nye troede, at side, gå tilbage til listen side, og ringe til, friske, en metode til at ajourføre, listview,.når det hele er koblet op, kan vi køre det til rent faktisk at komme nogle værdier, i tanker, her er, hvad det ser ud til, at den programmerbare og androide ind i nogle af dine tanker.,,,,,,,, på listen, efter at du har opført et par tanker, din liste vil se sådan her:,,,,,,,, konklusion,, der har du det.du har nu mulighed for at tilføje database funktionalitet, din xamarin. former app opbevarer og hente nogen form for oplysninger med lethed, til at fortsætte deres uddannelse, rejse med xamarin. former og sqlite giver jeg dem følgende udfordring.se, om du kan forbedre denne ansøgning, for at slette tanker og ajourfører listen side på samme måde som angivelsen side.held og lykke og glæde, kodning.