KMI / TMA Tvorba mobilních aplikací. 6. seminář ZS 2016/2017 Středa 13:15-15:45

Podobné dokumenty
Návrh a tvorba WWW stránek 1/14. PHP a databáze

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

Databázové systémy. Cvičení 6: SQL

Sada 1 - PHP. 14. Úvod do jazyka SQL

KMI / TMA. Tvorba mobilních aplikací. 8. seminář ZS 2017/2018 ČTVRTEK 13:15-15:45

POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

Úvod do databázových systémů

Semestrální práce 2 znakový strom

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

8.2 Používání a tvorba databází

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

Použití databází na Webu

Oracle XML DB. Tomáš Nykodým

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

11/29/11. (c) Miroslav Balík, Ondřej Kroupa, Martin Pelant. Obsah. Databáze Content Provider Soubory

Algoritmizace prostorových úloh

Semináˇr Java X JDBC Semináˇr Java X p.1/25

17. července :51 z moravec@yahoo.com

Zápisování dat do databáze

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

KIV/ZIS cvičení 6. Tomáš Potužák

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());

Konceptuální modelování a SQL

Databáze I. Přednáška 4

Databáze I. 5. přednáška. Helena Palovská

Virtual Private Database (VPD) Jaroslav Kotrč

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

Text úlohy. Systémový katalog (DICTIONARY):

Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová. 5. Statistica

Jazyk SQL databáze SQLite. připravil ing. petr polách

Návod k aplikaci SQL Tools v.2.3

Databázové a informační systémy

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

Úvod do programovacích jazyků (Java)

1 Webový server, instalace PHP a MySQL 13

Operátory ROLLUP a CUBE

Programování v Javě I. Leden 2008

Úvod do databázových systémů

KMI / TMA Tvorba mobilních aplikací. 3. seminář ZS 2016/2017 Středa 13:15-15:45

KMI / TMA. Tvorba mobilních aplikací. 3. seminář ZS 2017/2018 ČTVRTEK 13:15-15:45

Programování v Javě I. Únor 2009

O Apache Derby detailněji. Hynek Mlnařík

Anotace a Hibernate. Aleš Nosek Ondřej Vadinský Daniel Krátký

Pantek Productivity Pack. Process Data Logger. Uživatelský manuál

OBJECT DEFINITION LANGUAGE. Jonáš Klimeš NDBI001 Dotazovací Jazyky I 2013

KMI / TMA Tvorba mobilních aplikací. 9. seminář ZS 2016/2017 Středa 13:15-15:45

Databázové a informační systémy Jana Šarmanová

13. blok Práce s XML dokumenty v databázi Oracle

Verzování a publikace dat na webu za pomoci PostgreSQL

Algoritmizace prostorových úloh

8 Třídy, objekty, metody, předávání argumentů metod

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

5. POČÍTAČOVÉ CVIČENÍ

Programování v C++, 2. cvičení

Databázové systémy a SQL

DUM 12 téma: Příkazy pro tvorbu databáze

Programování v jazyku C# II. 5.kapitola

Michal Krátký, Miroslav Beneš

Databázové systémy, MS Access. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1130_Databázové systémy, MS Access_PWP

Třetí skupina zadání projektů do předmětu Algoritmy II, letní semestr 2017/2018

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Seminář Java II p.1/43

1 Administrace systému Moduly Skupiny atributů Atributy Hodnoty atributů... 4

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

Vkládání, aktualizace, mazání

Konstruktory a destruktory

Databáze I. Přednáška 7

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Použití dynamických parametrů prostředí SET_ENV_ v MarushkaDesignu

Administrace Oracle. Práva a role, audit

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL,

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

[APLIKACE PRO PŘEHRÁVÁNÍ VIDEA - PROJEKT MIAMI - SERVEROVÁ ČÁST]

Novinky v PostgreSQL 9.4. Tomáš Vondra, 2ndQuadrant

SQL - trigger, Databázové modelování

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

RELAČNÍ DATABÁZE ACCESS

Kolekce, cyklus foreach

Přehled systému Microsoft SQL Server. Komu je kniha určena Struktura knihy Nejvhodnější výchozí bod pro čtení knihy Konvence a struktura knihy

KIV/ZIS cvičení 5. Tomáš Potužák

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Programování v C++ 3, 3. cvičení

ZÁVĚREČNÁ STUDIJNÍ PRÁCE dokumentace

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

SQL tříhodnotová logika

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML

Programování v Pythonu

Transkript:

KMI / TMA Tvorba mobilních aplikací 6. seminář 2.11.2016 ZS 2016/2017 Středa 13:15-15:45

OBSAH SEMINáře Ukládání dat

Ukládání dat Jaké jsou možnosti? SharedPreferences jednoduchá data databáze SQLite relační data assets/raw resources soubory jen pro čtení přibalené v APK systém souborů klasické Java File I/O

sharedpreferences persistence jednoduchých dat uložené dvojice klíč:hodnota klíč: String hodnota: primitivní datový typ int, boolean, float, long String, Set<String> uložené v souboru na disku blackbox, systém poskytuje rozhraní

sharedpreferences ZÍSKÁNÍ INSTANCE rozhraní poskytuje SharedPreferences instanci SharedPreferences získáme pomocí metody: getsharedpreferences(string, int) můžeme mít více úložišť, většinou to však není potřeba získáním instance neexistujícího úložiště, dojde k jeho vytvoření

sharedpreferences ZÍSKÁNÍ INSTANCE getsharedpreferences(string name, int mode) name: název úložiště dle našeho uvážení (doporučuje se applicationid + naše jméno mode: MODE_PRIVATE (=0), ostatní konstanty jsou deprecated

sharedpreferences ukládání dat probíhá pomocí SharedPreferences.Editor instanci editoru získáme zavoláním edit() na instanci SharedPreferences editor poskytuje metody: putboolean(key, value), putint(key, value) a další pro vložení hodnot commit/apply pro uložení změn do souboru další pomocné metody (např. clear)

sharedpreferences získání dat data z úložiště získáme přímo na instanci SharedPreferences pomocí metod: int getint(key, default), String getstring(key, default) pokud je hodnota v úložišti, je vrácena, v opačném případě je vrácena hodnota default

co je to? relační databázový systém implementovaný v C téměř celý standard SQL-92 1 databáze = 1 soubor; rychlý přístup syntaxe základních CRUD operací velmi podobná MySQL/MariaDB, PostgreSQL

SQLite v Androidu podpora v systému od počátku věků systém poskytuje vlastní rozhraní (žádné JDBC a podobně) pro práci s databází se používá třída SQLiteDatabase metody pro DML operace query, insert, update, delete, execsql pro jakýkoli SQL příkaz a další

Inicializace databáze pro jednodušší inicializaci se používá třída SQLiteOpenHelper pro vytvoření databáze vyvoříme potomka SQLiteOpenHelper potřeba zavolat konstruktor rodiče a přepsat nejméně dvě metody oncreate() a onupgrade()

Inicializace databáze super(context context, String name, CursorFactory factory, int version) context: předáme kontext z aktivity name: název databáze factory: null, nepotřebujeme version: verze databáze pro následné aktualizace

Inicializace databáze

Inicializace databáze oncreate(sqlitedatabase db) zde proběhne inicializace databáze při prvním přístupu, tj. vytvoření tabulek například

Inicializace databáze onupgrade(sqlitedatabase db, int oldversion, int newversion) pokud změníme strukturu databáze a zvýšíme verzi db v konstruktoru SQLiteOpenHelper, systém detekuje změnu a umožní nám provést operace pro upgrade, např. ALTER TABLE ADD COLUMN pokud nemáme více verzí, nemusí dělat nic

Přístup k databázi získáme instanci našeho potomka SQLiteOpenHelper na něm zavoláme getreadabledatabase nebo getwritabledatabase tyto metody inicializují databázi a vrátí nám instanci SQLiteDatabase, se kterou můžeme pracovat getreadabledatabase: číst getwritabledatabase: číst/zapisovat

ContentValues pro vkládání dat do databáze se používá pomocná třída ContentValues instance uchovává dvojice klíč:hodnota klíč: String, sloupec tabulky hodnota: dle datového typu sloupce např. ContentValues cv = new ContentValues(); cv.put( column1, value); cv.put( column2, value);

Vložení dat můžeme použít metodu execsql s SQL příkazem ( INSERT INTO ) nebo metodu insert(string table, String nullcolumnhack, ContentValues cv) insert( my_table, null, cv);

Změna dat můžeme použít metodu execsql s SQL příkazem ( UPDATE ) nebo metodu update(string table, ContentValues cv, String whereclause, String[] whereargs) table: tabulka, cv: hodnoty pro změnu whereclause: klauzule WHERE whereargs: pole řetězců, které jsou doplněny za výskyty? v řetězci whereclause

Změna dat můžeme použít metodu execsql s SQL příkazem ( UPDATE ) nebo metodu update(string table, ContentValues cv, String whereclause, String[] whereargs) table: tabulka, cv: hodnoty pro změnu whereclause: klauzule WHERE whereargs: pole řetězců, které jsou doplněny za výskyty? v řetězci whereclause

Změna dat

Získání dat Cursor instance uchovávájící výsledek dotazu z databáze, zpravidla více záznamů tabulky metody pro změnu ukazatele na řádek výsledku boolean movetofirst() posune ukazatel na první záznam true, pokud byl posun úspěšný boolean movetonext() posune ukazatel na další záznam true, pokud byl posun úspěšný

Získání dat Cursor metody pro získání záznamů z řádku, na který aktuálně ukazuje getint(int columnindex) getstring(int columnindex) getfloat(int columnindex) a další jako argument očekává index sloupce, který získáme pomocí metody getcolumnindex(string column), případně můžeme vložit číslo ručně

Získání dat Cursor metody pro získání záznamů z řádku, na který aktuálně ukazuje getint(int columnindex) getstring(int columnindex) getfloat(int columnindex) a další jako argument očekává index sloupce, který získáme pomocí metody getcolumnindex(string column), případně můžeme vložit číslo ručně

Získání dat získání výsledku dotazu, tj. instance třídy Cursor přetížené metody query podle částí klauzule SELECT

Získání dat

FILESYSTEM ukládání přímo do paměti zařízení použití klasického Java I/O třídy File, InputStream, InputReader, získání cest pomocí metod getfilesdir getexternalfilesdir getexternalstoragepublicdirectory,

ASSETS Soubory přibalené k APK pro různé vlastní konfigurační soubory, zvuky, jpg a další formáty pouze ke čtení uložené v src/main/assets v Javě přístup pomocí metody getassets().open( )

ÚKOL 6. semináře 1) Do třídy TODO položky přidat datovou složku indikující provedení úkolu. Pro změnu příznaku přidat do editovací aktivity Switch provedeno. 2) Přidat aktivitu pro nastavení přístupnou z toolbar menu, která bude obsahovat TextView a Switch pro možnost Zobrazení i provedených úkolu. Na základě této možnosti upravit načítání TODO položek (true: zobrazení provedených i neprovedených, false: zobrazení pouze neprovedených). Hodnotu ukládat do SharedPreferences. 3) Implementovat ukládání/načítání TODO položek pomocí SQLite databáze. Po restartu si aplikace musí seznam položek pamatovat. Tipy pro řešení: 1) K TODO položce se bude hodit přidat i datovou složku id, která bude uchovávat id záznamu v databázi. 2) Hodí se označit ID v databázi jako primární klíč s příznakem autoincrement pro automatické vytváření ID. 3) Při oncreate/po přidání/po editaci zavolat metodu, která naplní ArrayList aktuálními záznamy z databáze a aktualizuje adaptér.

Otázky Ptejte se!