PROGRAMAÇÃO PARA
DISPOSITIVOS 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!

Aula 12/06 (SQLite)

  • 1.
  • 2.
    Objetivos da aula Banco de Dados  Exercício
  • 3.
    Qual banco dedados o Android tem integração?
  • 4.
  • 5.
    Cada aplicação podecriar um ou mais banco de dados.
  • 6.
    Os bancos dedados da sua aplicação ficam localizados em: /data/data/nome_pacote_app/databases
  • 7.
    Um banco dedados é vísivel somente a aplicação que o criou.
  • 8.
    Podemos criar umbanco de dados de várias formas:
  • 9.
  • 10.
    Usando um cliente,por exemplo o SQLite Expert Personal (http://www.sqliteexpert.com/);
  • 11.
    Ou pelo aplicativoSQLite3 através do console do emulador.
  • 12.
    Vamos focar namelhor prática, a criação e a manutenção de um banco de dados via API.
  • 13.
  • 14.
    Precisamos estender aclasse SQLiteOpenHelper e implementar os métodos onCreate() e onUpgrade().
  • 15.
    Os métodos onCreate()e onUpgrade() são chamados automaticamente pelo Android quando o banco de dados precisa ser criado ou atualizado.
  • 16.
    Através da instânciada 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);”);
  • 17.
    Controlamos as atualizaçõesdo banco de dados por meio de uma versão, definida por nós, um valor incremental.
  • 18.
    Vamos observar algunsoutros comandos:
  • 19.
    Para inserir umregistro, utilizamos o método db.insert(tabela, nullColumnHack, valores).
  • 20.
    ContentValues valores =new ContentValues(); valores.put(“nome”, “Carro”); valores.put(“placa”, “AAA-1111”); valores.put(“ano”, “2008”); bb.insert(“carro”, null, valores);
  • 21.
    É recomendado criaruma coluna com o nome _id que seja auto incremento.
  • 22.
    Para atualizar umregistro, utilizamos o método db.update(tabela, valores, where, whereArgs).
  • 23.
    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});
  • 24.
    Para deletar umregistro, utilizamos o método db.delete(tabela, where, whereArgs).
  • 25.
    String id =“1”; db.delete(“carro”, “_id = ?”, new String[]{id});
  • 26.
    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.
  • 27.
    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); }
  • 29.