Uporaba lokalne podatkovne baze TinyDB

Uporaba lokalne podatkovne baze TinyDB

Avtor: Ernest Gungl (prevedeno in prirejeno po knjigi App Inventor 2, Wolber in drugi)

Učni cilji: Poznam programske konstrukte za delo z lokalno podatkovno bazo (TinyDB) in jih smiselno uporabljam: shranjevanje podatkov v lokalno bazo, pridobivanje podatkov iz baze

Uvod

Za vsakega člana hrani Facebook podatkovno bazo, ki vključuje ime računa, prijateljev in elektronskih naslovov. Amazon ima podatkovno bazo o vsem kar prodaja – kar lahko mi kupimo. Google ima podatkovno bazo o vseh spletnih straneh svetovnega spleta (WWW). Veliko naprednih aplikacija, ki jih lahko tudi sami napišemo lahko komunicirajo s podatkovno bazo.

V večini programskih okolij velja, da pisanje aplikacij, ki komunicirajo z bazo, sodi med naprednejše tehnike programiranja: najprej je potrebno konfigurirati bazni strežnik (npr. MySQL ali Oracle), nato pa napisati programsko kodo, ki zna komunicirati s strežnikom. Na mnogih univerzah se študentje učijo programirati podatkovne baze šele, ko imajo dovolj izkušenj z osnovnim programiranjem.

Prim uporabi App Invetorja je delo z bazo enostavno, saj samo programsko okolje za nas opravi najtežje stvari in mnogo drugih koristnih stvari). Jezik pripravi komponente, ki omejijo komunikacijo z bazo na zgolj dve vrsti operacij: Shrani, Pridobi! Pišemo lahko dve vrsti aplikacij. Prva vrsta shrani podatke neposredno na napravo (baza se torej nahaja lokalno na napravi), druga vrsta pa shranjuje podatke na centralizirano bazo, ki se nahaja na spletnem strežniku. Ta zadnja omogoča enostavno deljenje podatkov z drugimi uporabniki.

Podatki shranjeni v spremenljivkah ali nastavitvah komponent aplikacije so kratkotrajnega značaja. Če uporabnik zapiše neke podatke v obrazec in ga zapre, ne da bi le-te ped tem shranil v bazo, se podatki izgubijo. Da bi podatke trajno shranili, jih moramo shraniti v podatkovno bazo. Shranjevanje podatkov v bazo je t.i. trajno shranjevanje, saj ko aplikacijo ponovno odpremo, bomo podatke spet imeli na razpolago.

Uporabo lokalne podatkovne baze in ustrezne gradnike, dogodke in upravitelje dogodkov bomo prikazali v tem gradivu.

Lokalna podatkovna baza (TinyDB)

APP Inventor ponuja dve komponenti za delo z bazo: TinyDB in TinyWebDB. Za shranjevanje podatkov lokalno bazo, ki se nahaja na naši Android napravi moramo uporabiti TinyDB. Ta je primerna za shranjevanje podatkov, za katere nimamo potrebe po delitvi z drugimi napravami ali osebami v spletu. TinyWebDB je namenjena deljenju podatkov med uporabniki preko interneta.

Komponente za delo z bazo so v obeh primerih podobne, vendar je TinyDB za delo z lokalno bazo enostavnejša.

Pri tej vrsti podatkovne baze se vsi podatki shranijo neposredno na samo napravo. Baze sploh ni potrebno ustvarjati.

(slika1_0.JPG)

Shranjevanje podatkov v lokalno bazo

Podatke shranjujemo s pomočjo bloka TinyDB.StoreValue, kot to prikazuje slika 1.

(slika1.PNG)
Slika1: Blok TinyDB.StoreValue shrani podatek v lokalno bazo

Za shranjevanje podatkov v bazo se uporabljena t.i. shema nalepka-vrednost. Na sliki 1 je nalepka označena z »OdzivnoSporocilo«. Vrednost je nek tekst, ki ga je uporabnik vnesel v tekstovno okno »TextBoxOdziv« (npr. »Spim, pusti me!«). Nalepka daje podatkom, ki smo jih shranili v bazo ime, da jih lahko kasneje prikličemo po tem imenu. Vrednost je kar podatek sam. Nalepko si lahko predstavljamo kot ključ, ki ga uporabimo kasneje za priklic podatkov iz baze.

App Inventor TinyDB si lahko predstavljamo tudi kot tabelo v kateri imamo pare nalepka-vrednost. Po izvedbi bloka LokalnaBazaTinyDB.StoreValue na sliki 1, bo vsebina lokalne podatkovne baze (tabele), kot jo prikazuje tabela 1:

(slika1_1.PNG)
Tabela 1: Vrednost shranjena v podatkovni bazi

Aplikacija lahko shrani več takšnih parov nalepka-vrednost.Nalepka jezmeraj besedilo, vrednost pa je lahko ena informacija (tekst, število) ali seznam. Vsaka nalepka ima samo eno vrednost; torej zmeraj, ko shranimo vrednost z neko nalepko, povozimo morebiti obstoječo vrednost z isto nalepko.

Pridobivanje podatkov iz baze

Z uporabo bloka LokalnaBazaTinyDB.GetValue pridobimo podatke iz baze. Podatke, ki ga želimo pridobiti iz baze naslovimo z nalepko (npr. OdzivnoSporocilo na sliki 2).

(slika2.PNG)
Slika2: Pogosto preberemo vrednosti iz baze, ko aplikacijo prvic zazenemo

Pogosto želimo pridobiti podatke iz baze, ko se aplikacija prvič zažene. V ta namen služi posebni upravitelj dogodkov Screen1.Initialize, ki je prožen ob zagonu aplikacije. Če klic metode LokalnaBazaTinyDB.GetValue za podano nalepko ne najde podatka v bazi, izpiše vrednost, ki je podana za valuIfTagNotThere (v našem primeru »Te značke ni v bazi«). Blok na sliki 2, priredi labeli LabelOdziv vrednost, ki jo pridobi GetValue.

0%
0%