Aula 12/06 (SQLite)

Post on 11-Jun-2015

282 views 4 download

description

Aprenda alguns comandos da API de persistência do Android.

Transcript of Aula 12/06 (SQLite)

PROGRAMAÇÃO PARADISPOSITIVOS MÓVEIS

Banco de Dados

Objetivos da aula

Banco de Dados Exercício

Qual banco de dados o Android tem integração?

SQLite

Cada aplicação pode criar um ou mais banco de dados.

Os bancos de dados da sua aplicação ficam localizados em:

/data/data/nome_pacote_app/databases

Um banco de dados é vísivel somente a aplicação que o criou.

Podemos criar um banco de dados de várias formas:

Programaticamente, via API;

Usando um cliente, por exemplo o SQLite Expert Personal (http://www.sqliteexpert.com/);

Ou pelo aplicativo SQLite3 através do console do emulador.

Vamos focar na melhor prática, a criação e a manutenção de um banco de dados via API.

Como criaremos um banco?

Precisamos estender a classe SQLiteOpenHelper e implementar os métodos onCreate() e onUpgrade().

Os métodos onCreate() e onUpgrade() são chamados automaticamente pelo Android quando o banco de dados precisa ser criado ou atualizado.

Através da instância da classe que estende SQLiteOpenHelper, utilizamos o método getWritableDatabase() para abrirmos uma conexão com o banco de dados, onde podemos executar comandos SQL da seguinte forma:

SQLiteDatabase db = dbHelper.getWritableDatabase();

db.execSQL(“create table carro (_id integer primary key autoincrement, nome text not null, placa text not null, ano text not null);”);

Controlamos as atualizações do banco de dados por meio de uma versão, definida por nós, um valor incremental.

Vamos observar alguns outros comandos:

Para inserir um registro, utilizamos o método db.insert(tabela, nullColumnHack, valores).

ContentValues valores = new ContentValues();valores.put(“nome”, “Carro”);valores.put(“placa”, “AAA-1111”);valores.put(“ano”, “2008”);bb.insert(“carro”, null, valores);

É recomendado criar uma coluna com o nome _id que seja auto incremento.

Para atualizar um registro, utilizamos o método db.update(tabela, valores, where, whereArgs).

String id = “1”;

ContentValues valores = new ContentValues();

valores.put(“nome”, “novo nome”);

valores.put(“placa”, “AAA-1111”);

valores.put(“ano”, “2008”);

db.update(“carro”, valores, “_id = ?”, new String[]

{id});

Para deletar um registro, utilizamos o método db.delete(tabela, where, whereArgs).

String id = “1”;

db.delete(“carro”, “_id = ?”, new String[]{id});

Para buscar registros, utilizamos o método db.query(distinct, tabela, colunas, selecao, selecaoArgs, groupBy, orderBy), que nos retorna um objeto do tipo

Cursor, similar ao ResultSet da API do JDBC.

Cursor c = db.query(“carro”, new String[] {“_id”,

“nome”, “placa”, “ano”}, “nome=?”, new String[] {“nome

consultado”}, null, null, null);

if (c.getCount() > 0) {

Carro carro = new Carro();

c.moveToFirst();

carro.id = c.getLong(0);

carro.nome = c.getString(1);

carro.placa = c.getString(2);

carro.ano = c.getInt(3);

}

Até a próxima!