DATA STORAGE. wprowadzenie Michał Mynarski. środa, 26 października 11

Podobne dokumenty
Projektowanie systemów baz danych

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Ref. 7 - Język SQL - polecenia DDL i DML

Język SQL, zajęcia nr 1

Bazy danych 7. SQL podstawy

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Bazy danych. Dr inż. Paweł Kasprowski

Programowanie urządzeń mobilnych. dr inż. Andrzej Grosser na podstawie wykładu dr inż. Juliusza Mikody

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

akademia androida Składowanie danych część VI

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Bazy danych 5. Samozłaczenie SQL podstawy

Programowanie w języku Java. Bazy danych SQLite w Javie

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Wykład 4. SQL praca z tabelami 1

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

Bazy danych 4. SQL podstawy. P. F. Góra

Podstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Bazy danych. Polecenia SQL

Bazy danych 4. SQL- podstawy

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Lab.8: Podstawy języka SQL.

Przestrzenne bazy danych Podstawy języka SQL

Relacyjne bazy danych. Podstawy SQL

Wykład 05 Bazy danych

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Bazy danych Ćwiczenia projektowe

Po prawidłowym podłączeniu do serwera MySQL należy wybrać bazę, na której będziesz pracować:

Bazy Danych i Usługi Sieciowe

Relacyjne bazy danych. Podstawy SQL

Wykład 2. SQL 1 Structured Query Lenguage

P o d s t a w y j ę z y k a S Q L

Paweł Rajba

Podstawowe informacje o bazach danych. Technologie Informacyjne

Tworzenie baz danych i tabel

Bazy danych i usługi sieciowe

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

Wykład 5. SQL praca z tabelami 2

Wykład 8. SQL praca z tabelami 5

BAZA DANYCH SIECI HOTELI

040 STRUCTURED QUERY LANGUAGE. Prof. dr hab. Marek Wisła

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

1. Sprawdzenie ustawień konfiguracyjnych. Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables

Komunikacja z bazą danych psql

MySQL. Darmowa baza danych. Æwiczenia praktyczne

Wprowadzenie do JDBC z wykorzystaniem bazy H2

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

Hurtownia Świętego Mikołaja projekt bazy danych

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Instrukcja CREATE TABLE

Systemy internetowe. Wykład 4 mysql. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Wprowadzenie do języka SQL

Wykład 6. SQL praca z tabelami 3

NARZĘDZIA WIZUALIZACJI

Instalacja MySQL.

Systemowe aspekty baz

Systemy GIS Tworzenie zapytań w bazach danych

SQL 4 Structured Query Lenguage

Wykład :45 BD-1 W_3

Bazy danych i usługi sieciowe

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Paweł Cieśla. Dokumentacja projektu

Bazy danych 10. SQL Widoki

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Aspekty aktywne baz danych

PL/SQL. Lidia Małkiewicz i Cezary Skubała

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

PODSTAWY BAZ DANYCH 13. PL/SQL

Autor: Joanna Karwowska

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Programowanie w Ruby

Ogólny plan przedmiotu. Strony WWW. Literatura BAZY DANYCH. Materiały do wykładu:

Podyplomowe Studium Programowania i Baz Danych

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Bazy danych 6. Klucze obce. P. F. Góra

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

SQL w praktyce. Miłej i owocnej nauki!!!

Podejście obiektowe do relacyjnych baz danych Hibernate.

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

Język baz danych SQL cz.1

Połączenie z bazą danych : mysql h u root -p Enter password: *******

SQL :: Data Definition Language

Język SQL. Rozdział 9. Język definiowania danych DDL, cześć 1. Tworzenie relacji, typy danych, wartości domyślne atrybutów, słownik bazy danych.

Aplikacje bazodanowe. Laboratorium 1. Dawid Poªap Aplikacje bazodanowe - laboratorium 1 Luty, 22, / 37

SQL Structured Query Language

Transkrypt:

DATA STORAGE wprowadzenie Michał Mynarski środa, 26 października 11

DZISIAJ OPOWIEMY O TYM, JAK PRZECHOWYWAĆ DANE Shared Preferences Internal Storage External Storage SQLite Datebases Network Connection środa, 26 października 11

SHARED PREFERENCES Lekki mechanizm Tylko proste dane Zapisanie podstawowych, nieskomplikowanych danych tj. ustawienia interfejsu aplikacji Współdzielenie między wszystkimi komponentami aplikacji środa, 26 października 11

INTERNAL STORAGE Dane zapisywane są w domyślnym folderze na smartfonie/ tablecie Dostęp ma tylko dana aplikacja Po odinstalowaniu folder z zawartością jest usuwany środa, 26 października 11

PRZYKŁAD ZAPISU DO PLIKU String FILENAME = "hello_file"; String string = "hello world!"; FileOutputStream fos = openfileoutput(filename, Context.MODE_PRIVATE); fos.write(string.getbytes()); fos.close(); środa, 26 października 11

EXTERNAL STORAGE Wymagana karta SD (jako miejsce zapisu) Dane mogą być łatwo usunięte przez użytkownika urządzenia Wszystkie aplikacje mogą uzyskać dostęp do danych Zapisywanie i odczytywanie danych wymaga odpowiednich uprawnień środa, 26 października 11

SPRAWDZANIE NOŚNIKA boolean mexternalstorageavailable = false; boolean mexternalstoragewriteable = false; String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { // We can read and write the media mexternalstorageavailable = mexternalstoragewriteable = true; } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { // We can only read the media mexternalstorageavailable = true; mexternalstoragewriteable = false; } else { // Something else is wrong. It may be one of many other states, but all we need // to know is we can neither read nor write mexternalstorageavailable = mexternalstoragewriteable = false; } środa, 26 października 11

NETWORK STORAGE zapisywanie danych na witrynie internetowej lub na zewnętrznym serwerze używanie klas z paczek java.net* i android.net* środa, 26 października 11

SQLITE DATABASES Tworzenie baz danych, które mogą być używane przez wszystkie komponenty aplikacji Inne aplikacje nie mają dostępu do bazy danego programu środa, 26 października 11

ALE O TYM OPOWIE JUŻ KOLEGA OBOK ;) michal.mynarski@android.com.pl środa, 26 października 11

0x200 :: SQLite Baza danych SQLite Szymon Datko fenekpl@o2.pl

0x201 :: SQLite :: Wprowadzenie Silnik bazodanowy obsługujący język SQL. Jest darmowy, niewielki i łatwoprzenaszalny. Nie wymaga konfiguracji, ani żadnego zewnętrzego procesu RDBMS do administrowania nim. Obsługa transakcji według zasad ACID. Baza danych zapisywana jako samodzielny plik binarny. Wysoka wydajność w porównaniu z serwerami baz danych (przy obsłudze jednego użytkownika)

0x202 :: SQLite :: Wprowadzenie++ Powszechnie używana, nawet przez wielkie korporacje. Idealna do zastosowania w systemach wbudowanych. Brak konfiguracji praw dostępu do bazy danych. Brak obsługi jednoczesnego zapisu dla kilku użytkowników. Położenie w systemie Android: Katalog /data/data/<nazwa_pakietu>/databases/ Nazwa pliku jest jednocześnie nazwą bazy danych.

0x203 :: SQLite :: Typy danych Silnik SQLite nie zmusza nas do zdefiniowania jakie typy danych będą przechowywane. Wszystko w nim jest ciągiem znaków. Określenie typu danych przydatne jest jednak np. przy sortowaniu danych oraz w celu zapewnienia zgodności z innymi bazami danych. Podstawowe grupy typów danych w bazie danych SQLite: TEXT NUMERIC INTEGER REAL NONE

0x204 :: SQLite :: Grupy typów Istnieje 5 reguł przydzielenia danego typu do grupy typów: 1) Jeśli typ zawiera w nazwie INT to zostaje przydzielony do grupy INTEGER 2) Jeśli typ zawiera w nazwie CHAR, CLOB, bądź TEXT to zostaje przypisany do grupy TEXT 3) Jeżeli typ zawiera podciąg BLOB lub jeśli nie sprecyzowano typu to należy do rodziny NONE. 4) Jeżeli typ danych zawiera REAL, FLOA, bądź DOUB to jest on pokrewny z REAL. 5) W pozostałym przypadku jest to typ NUMERIC.

0x205 :: SQLite :: Grupy typów++ Nazwa typu danych użyta w poleceniu CREATE TABLE INT, INTEGER, TINYINT, SMALLINT, MEDIUMINT, BIGINT, UNSIGNED BIG INT, INT2, INT8 CHARACTER(20), VARCHAR(255), VARYING, CHARACTER(255), NCHAR(55), NATIVE, CHARACTER(70), NVARCHAR(100), TEXT, CLOB BLOB lub (brak sprecyzowanego typu) REAL, DOUBLE, DOUBLE, PRECISION, FLOAT NUMERIC, DECIMAL(10,5), BOOLEAN, DATE, DATETIME Grupa pokrewieństwa typu danych Reguła przypisania pokrewieństwa INTEGER 1 TEXT 2 NONE 3 REAL 4 NUMERIC 5

0x206 :: SQLite :: Składnia poleceń Zgodność z większością standardu SQL 92. Zapytania zakończone średnikami. Instrukcje SQL tradycyjnie zapisywane wielkimi literami. Podstawowe typy poleceń: DML (ang. Data Manipulation Language), np. SELECT, INSERT, UPDATE, DELETE DDL (ang. Data Definition Language), np. CREATE, DROP, ALTER DCL (ang. Data Control Language), np. GRANT, REVOKE, DENY

0x207 :: SQLite :: SELECT Polecenie SELECT służy do uzyskiwania danych z bazy. Składnia: SELECT pola FROM tabela [WHERE warunek][order kolejność][limit ilość]; Przykłady: SELECT * FROM SQLITE_MASTER; SELECT * FROM notes; SELECT imie, nazwisko FROM users WHERE nazwisko LIKE %kowal% ; SELECT _id, imie FROM users ORDER BY nazwisko ASC; SELECT * FROM piple WHERE age BETWEN 18 AND 50 LIMIT 10;

0x208 :: SQLite :: INSERT Polecenie INSERT służy do wprowadzania danych. Składnia: INSERT INTO tabela [(pole1, pole2)] VALUES ('wartość 1', 'wartość 2'); Przykłady: INSERT INTO users (id, imie, nazwisko) VALUES (null, 'Bridżit', 'Dżons'); INSERT INTO users (imie, nazwisko) VALUES ('Melon', 'Gips'); INSERT INTO users VALUES (null, 'Kasia', 'Kowalska');

0x209 :: SQLite :: UPDATE Polecenie UPDATE służy do modyfikacji istniejących pól. Składnia: UPDATE tabela SET pole1='wartość' [WHERE pole2='coś'] [LIMIT ilość]; Przykłady: UPDATE users SET nazwisko='nowak' WHERE nazwisko='kowalska'; UPDATE notes SET tresc='poprawiona treść' WHERE _id=3 LIMIT 1; UPDATE notes SET imie='adam';

0x210 :: SQLite :: DELETE Polecenie DELETE służy do usuwania rekordów. Składnia: DELETE FROM tabela [WHERE pole='wartość'][limit ilość]; Przykłady: DELETE FROM users WHERE _id=2 LIMIT 1; DELETE FROM users WHERE _id IN (2, 3, 4, 5); DELETE FROM notes WHERE 1=1; DELETE FROM notes;

0x211 :: SQLite :: CREATE Polecenie CREATE służy do tworzenia struktury bazy. Składnia: CREATE TABLE nazwa(pole1 atrybuty [, pole2 atrybuty [,...]]); Przykład: CREATE TABLE users(_id INTEGER PRIMARY KEY AUTOINCREMENT ASC, imie VARCHAR(20), nazwisko VARCHAR(20)); CREATE TABLE notes(_id INTEGER PRIMARY KEY AUTOINCREMENT ASC, tresc TEXT); CREATE TABLE test(i);

0x212 :: SQLite :: DROP Polecenie DROP służy do usuwania struktur bazy. Składnia: DROP TABLE nazwa; Przykłady: DROP TABLE users;

0x213 :: SQLite :: ALTER Polecenie ALTER służy do modyfikacji struktur bazy. Składnia: ALTER TABLE tabela ADD COLUMN nazwa atrybuty; ALTER TABLE tabela RENAME TO tabela_z_nową_nazwą; Przykłady: ALTER TABLE users ADD COLUMN nazwisko VARCHAR(20); ALTER TABLE notes RENAME TO notatki;

0x214 :: SQLite :: Komendy Poza standardo dostępnymi poleceniami języka SQL istnieją także specjalne komendy silnika SQLite. Przykładowe komendy:.dump [table] zrzut bazy/tabeli do formatu poleceń SQL.help wyświetla pomoc.read file wykonuje polecenia SQL z podanego pliku file.schema [table] wyświetla polecenie CREATE, jakiego użyto do utworzenia tabel (lub jednej, wskazanej tabeli).tables wyświeta istniejące tabele.exit wyjście

Code sample Piotr Giedziun piotrgiedziun@gmail.com

? Task List Store data in memory Store data in SQLite Download project http://dl.dropbox.com/u/7692650/pwr/taskmanagersqlite.tar.gz

View overview RelativeLayout TextView gravity="center" ListView android:layout_alignparentleft="true" android:layout_above="@id/addbutton" android:layout_below="@id/textview1" EditText android:layout_alignparentbottom="true" android:layout_alignparentleft="true" android:layout_toleftof="@id/addbutton" Button android:id="@+id/addbutton" android:layout_alignparentbottom="true" android:layout_alignparentright="true"

Activity main variables public void oncreate() {...... } tasklist = new ArrayList<Task>(); listadapter = new ArrayAdapter<Task>(this, android.r.layout.simple_list_item_1, tasklist); listview = (ListView) findviewbyid(r.id.simplelistview); edittext = (EditText) findviewbyid(r.id.edittext); addbutton = (Button) findviewbyid(r.id.addbutton); listview.setadapter(listadapter); after setcontentview

Create Task model Task.java public class Task { } public static final String TASK_ID = "id"; public static final String TASK_TEXT = "text"; public static final String TASK_TABLE = "tasks"; private long id; private String text; SQLite query CREATE TABLE tasks(id INTEGER PRIMARY KEY AUTOINCREMENT, text TEXT);

Create custom SQLiteOpenHelper SQLiteOpenHelper def: A helper class to manage database creation and version management. SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) oncreate(sqlitedatabase db) onupgrade(sqlitedatabase db, int oldver, int newver)

Model (MVC Pattern) CustomDbAdapter (database connection wraps) Open Close Insert Select Delete Sort (ORDER BY) etc.

Model (MVC Pattern) CustomDbAdapter Open SQLiteDatabase db;... CustomSQLiteOpenHelper h = new TasksSQLiteOpenHelper(context); db = h.getwritabledatabase(); //getreadabledatabase() Close Insert Select

Model (MVC Pattern) CustomDbAdapter Open Close db.close(); Insert Select

Model (MVC Pattern) CustomDbAdapter Open Close Insert Task t = new Task( Zjeść pizzę ); ContentValues values = new ContentValues(); values.put(task.task_text, t.gettext()); long id = db.insert(task.task_table, null, values); Select

Model (MVC Pattern) CustomDbAdapter Select Cursor c = db.query(task.task_table, new String[] {Task.TASK_ID, Task.TASK_TEXT}, null, null, null, null, null); Task t; if (c.movetofirst()) { do { t = new Task(c.getString(1)); t.setid(c.getint(0)); } while (c.movetonext()); } c.close();

AsyncTask =) asynchronous work publishes the results on the UI thread

AsyncTask

AsyncTask onpreexecute() doinbackground(params...) publishprogress(progress...) onprogressupdate(progress...) onprogressupdate(progress...) onpostexecute(result)

AsyncTask extends run AsyncTask<Params, Progress, Result> new AsyncTask().execute(arg1, arg2);