A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Guardando dados no Android. Persistência de informações Android fornece três tipos de persistência: Preferências compartilhadas (propriedades) Arquivos.

Apresentações semelhantes


Apresentação em tema: "Guardando dados no Android. Persistência de informações Android fornece três tipos de persistência: Preferências compartilhadas (propriedades) Arquivos."— Transcrição da apresentação:

1 Guardando dados no Android

2 Persistência de informações Android fornece três tipos de persistência: Preferências compartilhadas (propriedades) Arquivos Banco de dados (SqlLite) Estudaremos mais adiante

3 Preferências Fáceis de usar Permitem guardar Boolean, String, Float, Long e Integer Podem ser privadas ou globais (shared) a todas as aplicações Nota: Existem UI especializadas em editar preferências – Estudaremos isso mais adiante

4 Gravando e lendo preferências Context context = getApplicationContext(); String nome =.... String senha =.... SharedPreferences config = context.getSharedPreferences ("config", MODE_PRIVATE); Editor edit = config.edit(); edit.clear(); edit.putString("username", nome); edit.putString("password", senha); edit.commit(); SharedPreferences config = context.getSharedPreferences ("config", MODE_PRIVATE); String nome = config.getString("username", ""); String senha = config.getString("password", "");

5 Arquivos Privados, associados ao contexto do pacote da aplicação classes FileOutputStream, FileInputStream – Facilidades para processamento de linhas: PrintWriter e BufferedReader try { FileOutputStream fos = openFileOutput("arquivo.txt", MODE_PRIVATE); PrintWriter pw = new PrintWriter (new BufferedWriter( new OutputStreamWriter(fos))); pw.println(“Teste de escrita"); pw.close(); } catch (Exception e) { String erro = e.toString(); …. }

6 Arquivos (leitura) FileInputStream fis = openFileInput(" arquivo.txt"); BufferedReader br = new BufferedReader(new InputStreamReader(fis)); String s, linhas[200]; int nLinhas = 0; while ( (s = br.readLine() ) != null) { linhas[nLinhas++] = s; } br.close(); if (!getFileStreamPath(" arquivo.txt ").exists()) { // acusa erro }

7 Arquivos na memória externa // Verificar se mídia montada if (Environment.getExternalStorageState().equals Environment.MEDIA_MOUNTED) { File outFile = new File( getExternalFilesDir(Environment.DIRECTORY_PICTURES), fileName); BufferedOutputStream os = new BufferedOutputStream( new FileOutputStream(outFile)); DIRECTORY_ALARMS DIRECTORY_DCIM DIRECTORY_DOCUMENTS DIRECTORY_DOWNLOADS DIRECTORY_MOVIES DIRECTORY_MUSIC DIRECTORY_NOTIFICATIONS DIRECTORY_PICTURES DIRECTORY_PODCASTS DIRECTORY_RINGTONES

8 Database (SqlLite) SqlLite é um banco de dados relacional que vem com Android (emulador) Armazenado em /data/data/ /bancosDeDados Por padrão, todos os bancos são privados, acessíveis somente pelo aplicativo que os criou. Para compartilhar um banco de dados entre aplicativos, use provedores de conteúdo.

9 sqlLiteOpenHelper Objeto usado para gerenciar a lógica de criar/atualizar DB/Tabela Este objeto também provê mecanismos de cache e os métodos: – getWritableDatabase() - criar e / ou abrir um banco de dados que será usado para a leitura e escrita. – getReadableDatabase() - criar e / ou abrir um banco de dados é altamente recomendado que todas as tabelas incluam um campo de chave auto incremento chamado de "_id“ – é obrigatório para provedores de conteúdo. – representa o ID da linha.

10 Queries retornam objetos do tipo Cursor Cursor cur = db.query( table, columns, selection, selectionArgs, groupby, having, order); É necessário usar moveToFirst() pois o cursor está posicionado antes da primeira linha. O cursor pode se mover para frente e para trás. if (cur.moveToFirst() == false) } // não há linhas a ler return; { while(cur.moveToNext()) } // acesse os dados cur.get…(…); {

11 Todos os métodos de acesso a campo são baseadas no número da coluna, de modo que se deve converter o nome da coluna para um número da coluna em primeiro lugar: int column_Index=cur.getColumnIndex(“age”); int age = cursor.getInt(column_Index); Para inserir novas linhas na tabela use objeto ContentValues ContentValues values = new ContentValues(); values.put("name", person.getName()); values.put("age", person.getAge()); db.insert(DATABASE_TABLE, null, values);

12 DB: EXEMPLO DE USO package...... class... private SQLiteDatabase mDB = null; private DatabaseOpenHelper mDbHelper; { criaDB(); insereDadosDB(); mostraDB(); removeDB("Ivete Sangalo"); mostraDB(); destroiDB(); } private void criaDB() { mDbHelper = new DatabaseOpenHelper(this); mDB = mDbHelper.getWritableDatabase(); mDB.delete(DatabaseOpenHelper.TABLE_NAME, null, null); } private void destroiDB() { mDB.close(); mDbHelper.deleteDatabase(); }

13 private void insereDadosDB() { ContentValues values = new ContentValues(); values.put(DatabaseOpenHelper.ARTIST_NAME, "Daniela Mercury"); mDB.insert(DatabaseOpenHelper.TABLE_NAME, null, values); values.clear(); values.put(DatabaseOpenHelper.ARTIST_NAME, "Ivete Sangalo"); mDB.insert(DatabaseOpenHelper.TABLE_NAME, null, values); } private void mostraDB(String nome) { Cursor c = mDB.query(DatabaseOpenHelper.TABLE_NAME, DatabaseOpenHelper.columns, null, new String[] {nome}, null, null, null); String nome; Boolean moveu = c.moveToFirst(); while moveu { int idx=c.getColumnIndex(ARTIST_NAME); nome = c.getString(idx);... escreve nome... moveu = c.moveToNext(); } private void removeDB(String nome) { mDB.delete(DatabaseOpenHelper.TABLE_NAME, DatabaseOpenHelper.ARTIST_NAME + "=?", new String[] {nome}); }

14 HELPER package... import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DatabaseOpenHelper extends SQLiteOpenHelper { final static String TABLE_NAME = "artists"; final static String ARTIST_NAME = "name"; final static String _ID = "_id"; final static String[] columns = { _ID, ARTIST_NAME }; final private static String CREATE_CMD = "CREATE TABLE artists (" + _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + ARTIST_NAME + " TEXT NOT NULL)"; final private static String NAME = "artist_db"; final private static Integer VERSION = 1; final private Context mContext;

15 HELPER (cont.) public DatabaseOpenHelper(Context context) { super(context, NAME, null, VERSION); this.mContext = context; } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_CMD); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // N/A } void deleteDatabase() { mContext.deleteDatabase(NAME); }


Carregar ppt "Guardando dados no Android. Persistência de informações Android fornece três tipos de persistência: Preferências compartilhadas (propriedades) Arquivos."

Apresentações semelhantes


Anúncios Google