29
PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS Banco de Dados

Aula 12/06 (SQLite)

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Aula 12/06 (SQLite)

PROGRAMAÇÃO PARADISPOSITIVOS MÓVEIS

Banco de Dados

Page 2: Aula 12/06 (SQLite)

Objetivos da aula

Banco de Dados Exercício

Page 3: Aula 12/06 (SQLite)

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

Page 4: Aula 12/06 (SQLite)

SQLite

Page 5: Aula 12/06 (SQLite)

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

Page 6: Aula 12/06 (SQLite)

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

/data/data/nome_pacote_app/databases

Page 7: Aula 12/06 (SQLite)

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

Page 8: Aula 12/06 (SQLite)

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

Page 9: Aula 12/06 (SQLite)

Programaticamente, via API;

Page 10: Aula 12/06 (SQLite)

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

Page 11: Aula 12/06 (SQLite)

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

Page 12: Aula 12/06 (SQLite)

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

Page 13: Aula 12/06 (SQLite)

Como criaremos um banco?

Page 14: Aula 12/06 (SQLite)

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

Page 15: Aula 12/06 (SQLite)

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

Page 16: Aula 12/06 (SQLite)

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);”);

Page 17: Aula 12/06 (SQLite)

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

Page 18: Aula 12/06 (SQLite)

Vamos observar alguns outros comandos:

Page 19: Aula 12/06 (SQLite)

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

Page 20: Aula 12/06 (SQLite)

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

Page 21: Aula 12/06 (SQLite)

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

Page 22: Aula 12/06 (SQLite)

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

Page 23: Aula 12/06 (SQLite)

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});

Page 24: Aula 12/06 (SQLite)

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

Page 25: Aula 12/06 (SQLite)

String id = “1”;

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

Page 26: Aula 12/06 (SQLite)

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.

Page 27: Aula 12/06 (SQLite)

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);

}

Page 28: Aula 12/06 (SQLite)
Page 29: Aula 12/06 (SQLite)

Até a próxima!