Download - Aula 12/06 (SQLite)
![Page 1: Aula 12/06 (SQLite)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/1.jpg)
PROGRAMAÇÃO PARADISPOSITIVOS MÓVEIS
Banco de Dados
![Page 2: Aula 12/06 (SQLite)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/2.jpg)
Objetivos da aula
Banco de Dados Exercício
![Page 3: Aula 12/06 (SQLite)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/3.jpg)
Qual banco de dados o Android tem integração?
![Page 4: Aula 12/06 (SQLite)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/4.jpg)
SQLite
![Page 5: Aula 12/06 (SQLite)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/5.jpg)
Cada aplicação pode criar um ou mais banco de dados.
![Page 6: Aula 12/06 (SQLite)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/6.jpg)
Os bancos de dados da sua aplicação ficam localizados em:
/data/data/nome_pacote_app/databases
![Page 7: Aula 12/06 (SQLite)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/7.jpg)
Um banco de dados é vísivel somente a aplicação que o criou.
![Page 8: Aula 12/06 (SQLite)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/8.jpg)
Podemos criar um banco de dados de várias formas:
![Page 9: Aula 12/06 (SQLite)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/9.jpg)
Programaticamente, via API;
![Page 10: Aula 12/06 (SQLite)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/10.jpg)
Usando um cliente, por exemplo o SQLite Expert Personal (http://www.sqliteexpert.com/);
![Page 11: Aula 12/06 (SQLite)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/11.jpg)
Ou pelo aplicativo SQLite3 através do console do emulador.
![Page 12: Aula 12/06 (SQLite)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/12.jpg)
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)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/13.jpg)
Como criaremos um banco?
![Page 14: Aula 12/06 (SQLite)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/14.jpg)
Precisamos estender a classe SQLiteOpenHelper e implementar os métodos onCreate() e onUpgrade().
![Page 15: Aula 12/06 (SQLite)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/15.jpg)
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)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/16.jpg)
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)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/17.jpg)
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)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/18.jpg)
Vamos observar alguns outros comandos:
![Page 19: Aula 12/06 (SQLite)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/19.jpg)
Para inserir um registro, utilizamos o método db.insert(tabela, nullColumnHack, valores).
![Page 20: Aula 12/06 (SQLite)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/20.jpg)
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)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/21.jpg)
É recomendado criar uma coluna com o nome _id que seja auto incremento.
![Page 22: Aula 12/06 (SQLite)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/22.jpg)
Para atualizar um registro, utilizamos o método db.update(tabela, valores, where, whereArgs).
![Page 23: Aula 12/06 (SQLite)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/23.jpg)
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)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/24.jpg)
Para deletar um registro, utilizamos o método db.delete(tabela, where, whereArgs).
![Page 25: Aula 12/06 (SQLite)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/25.jpg)
String id = “1”;
db.delete(“carro”, “_id = ?”, new String[]{id});
![Page 26: Aula 12/06 (SQLite)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/26.jpg)
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)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/27.jpg)
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)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/28.jpg)
![Page 29: Aula 12/06 (SQLite)](https://reader037.vdocuments.com.br/reader037/viewer/2022102722/5579a1efd8b42ac1148b4866/html5/thumbnails/29.jpg)
Até a próxima!