Buscar

programação android dbas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

O Guia Definitivo de
ANDROID 
para
DBA’s
JELSAFÁ RODRIGUES
Introdução
Olá DBA,
E olá também pra você que, como eu, não é um DBA, mas estudando 
constantemente desenvolvimento.
Um dos aspectos mais importantes do Android é o banco de dados, 
por que quando seu dispositivo está sem internet, você tem que ar-
mazenar seus dados em algum lugar, certo?
Nesse e-book veremos SQLite e como gerenciar dados em Android. 
Veremos também dois padrões de desenvolvimento: Factory e DAO 
(Data Access Object).
Bem-vindo ao “Guia Definitivo de Android para DBA’s”! Espero que 
você aproveite cada uma das páginas.
SQLite
SQLite é o sistema de gerenciamento de banco de dados utilizado pelo 
Android para armazenamento de informações. Ele grava os dados 
num arquivo de texto junto ao aplicativo e recupera as informações 
quando necessário.
O banco de dados é dividido em tabelas, que podem receber os se-
guintes tipos de dados: 
 
 - NULL - Quando o valor é nulo.
 - INTEGER - Quando o valor um inteiro.
 - REAL - Quando o valor é um decimal.
 - TEXT - Quando o valor é um conjunto de caracteres (texto).
 - BLOB - Quando o valor é boleano, ou seja, 0 ou 1.
O gerenciamento do banco de dados é feito através de queries, coman-
dos em SQLite que dizem o que deve ser feito no banco. 
Para criação e exclusão de tabelas usamos as seguintes queries:
 - CREATE TABLE - Cria a tabela.
 - DROP TABLE - Deleta a tabela.
Para gerenciamento de dados nas tabelas, as seguintes queries podem 
ser utilizadas:
 - INSERT - Insere dados na tabela.
 - UPDATE - Atualiza dados na tabela.
 - DELETE - Deleta dados da tabela.
 - SELECT - Seleciona dados da tabela.
Factory
Toda aplicação precisa de um método de conexão com o banco de da-
dos para estabelecer uma comunicação estável.
O método mais recomendável é o padrão Factory. O padrão Factory 
define uma interface de criação de um objeto, mas deixa subclasses 
definirem qual classe instanciar. 
A classe Factory implementará a interface SQLiteOpenHelper, que irá 
implementar um construtor padrão e os métodos onCreate e onUp-
grade.
Na próxima página, criaremos uma ConnectionFactory classe que im-
plementará a criação e atualização das tabelas do banco de dados.
No exemplo abaixo, existe um construtor onde será determinado 
o nome e a versão do banco, o método onCreate onde as tabelas 
usuário e log serão criadas e o método onUpgrade onde as tabelas 
usuário e log serão deletadas e recriadas, se a versão atual for maior 
que a antiga. 
public class ConnectionFactory extends SQLiteOpenHelper{
 private final String NomeBanco = “banco_local”;
 private final int VersaoBanco = 1;
 public ConnectionFactory(Context context){
 super(context, NomeBanco, null, VersaoBanco);
 this.context = context;
 }
 public void onCreate(SQLiteDatabase database){
 UsuarioDAO usuarioDAO = new UsuarioDAO(context);
 usuarioDAO.create(database);
 LogDAO logDAO = new LogDAO(context);
 logDAO.create(database);
 }
 public void onUpgrade(SQLiteDatabase database, 
 int old, int new){
 if(new > old){
 UsuarioDAO usuarioDAO = new UsuarioDAO(context);
 usuarioDAO.drop(database);
 LogDAO logDAO = new LogDAO(context);
 logDAO.drop(database);
 onCreate(database);
 }
 }
}
O Guia Definitivo de Android pra DBA’s
public class Usuario{
 private int id;
 private String nome;
 private String senha;
 public Usuario(int id, String nome, String senha){
 this.id = id;
 this.nome = nome;
 this.senha = senha;
 }
 public int getId(){
 return this.id;
 }
 public void setId(int valor){
 this.id = valor;
 }
 public String getNome(){
 return this.nome;
 }
 public void setNome(String valor){
 this.nome = valor;
 }
 public String getSenha(){
 return this.senha;
 }
 public void setSenha (String valor){
 this.senha = valor;
 }
}
O Guia Definitivo de Android pra DBA’s
O Guia Definitivo de Android pra DBA’s
public class Log{
 private int id;
 private String data;
 private Usuario usuario;
 public Usuario(int id, Date data, Usuario usuario){
 this.id = id;
 setData(data);
 this.usuario = usuario;
 }
 public int getId(){
 return this.id;
 }
 public void setId(int valor){
 this.id = valor;
 }
 public String getData(){
 return this.data;
 }
 public void setData(Date valor){
 SimpleDateFormat dateFormat = new SimpleDateFormat(
 “yyyy-MM-dd HH:mm:ss”, Locale.getDefault());
 this.data = dateFormat.format(valor);
 }
 public Usuario getUsuario(){
 return this.usuario;
 }
 public void setUsuario(Usuario valor){
 this.usuario = valor;
 }
}
SQLite Queries
A comunicação com o banco de dados é feito através de queries. 
Abaixo, alguns exemplos com queries básicas:
Para criação de tabela
CREATE TABLE usuario (id INTEGER PRIMARY KEY AUTOIN-
CREMENT, nome TEXT, senha TEXT);
Para deleção de tabela
DROP TABLE usuario IF EXISTS;
Para inserção de dados
INSERT INTO usuario (id, nome, senha) values (1, “João da Silva“, 
“123456789“);
Para atualização de dados
UPDATE usuario SET nome = “João da Silva Pereira“, senha = 
“123456789“ WHERE id = 1;
Para deleção de dados
DELETE FROM usuario WHERE id = 1;
Para seleção de dados
SELECT * FROM usuario;
DAO
Nas próximas páginas implementaremos a classe UsuarioDAO, que 
irá executar as queries e gerenciar os dados da tabela usuario.
public class UsuarioDAO{
 ConnectionFactory db;
 Context context;
 public UsuarioDAO(Context context){
 this.context = context;
 this.db = new ConnectionFactory(context);
 }
 public void create(SQLiteDatabase database){
 String query = “CREATE TABLE usuario (”+
 “id INTEGER PRIMARY KEY AUTOINCREMENT, “+
 “nome TEXT, “+
 “senha TEXT)”;
 database.execSQL(query);
 }
 public void drop(SQLiteDatabase database){
 String query = “DROP TABLE IF EXISTS usuario;”;
 database.execSQL(query);
 }
 public void insert(Usuario usuario){
 SQLiteDatabase database = this.db.getWritableDatabase();
 ContentValues values = new ContentValues();
 values.put(“id”, usuario.getId());
 values.put(“nome”, usuario.getNome());
 values.put(“senha”, usuario.getSenha());
 database.insert(“usuario”, null, values);
 database.close();
 }
 public void update(Usuario usuario){
 SQLiteDatabase database = this.db.getWritableDatabase();
 ContentValues values = new ContentValues();
 values.put(“id”, usuario.getId());
 values.put(“nome”, usuario.getNome());
 values.put(“senha”, usuario.getSenha());
 return db.update(“usuario”, values, “id=?”, new String[] { 
 String.valueOf(usuario.getId()) });
 }
O Guia Definitivo de Android pra DBA’s
 public Usuario get(int id){
 Usuario usuario = new Usuario();
 String query = “SELECT id, nome, senha FROM usuario 
WHERE id = ”+id;
 SQLiteDatabase database = this.db.getWritableDatabase();
 Cursor cursor = database.rawQuery(query, null);
 if(cursor.moveToFirst()){
 usuario.setId(cursor.getInt(0));
 usuario.setNome(cursor.getString(1));
 usuario.setSenha(cursor.getString(2));
 }
 databse.close();
 return usuario;
 }
 public Usuario list(){
 ArrayList<Usuario> list = new ArrayList<Usuario>();
 String query = “SELECT id, nome, senha FROM usuario;”;
 SQLiteDatabase database = this.db.getWritableDatabase();
 Cursor cursor = database.rawQuery(query, null);
 if(cursor.moveToFirst()){
 do{
 Usuario usuario = new Usuario();
 usuario.setId(cursor.getInt(0));
 usuario.setNome(cursor.getString(1));
 usuario.setSenha(cursor.getString(2));
 list.add(usuario);
 } while(cursor.moveToNext());
 }
 database.close();
 return list;
 }
}
O Guia Definitivo de Android pra DBA’s
Nas próximas páginas implementaremos a classe LogDAO, que irá 
executar as queries e gerenciar os dados da tabela log.public class LogDAO{
 ConnectionFactory db;
 Context context;
 public LogDAO(Context context){
 this.context = context;
 this.db = new ConnectionFactory(context);
 }
 public void create(SQLiteDatabase database){
 String query = “CREATE TABLE log (”+
 “id INTEGER PRIMARY KEY AUTOINCREMENT, “+
 “data DATETIME DEFAULT CURRENT_TIMESTAMP, 
“+
 “usuario INTEGER)”;
 database.execSQL(query);
 }
 public void drop(SQLiteDatabase database){
 String query = “DROP TABLE IF EXISTS log;”;
 database.execSQL(query);
 }
O Guia Definitivo de Android pra DBA’s
O Guia Definitivo de Android pra DBA’s
 public void insert(Log log){
 SQLiteDatabase database = this.db.getWritableDatabase();
 ContentValues values = new ContentValues();
 values.put(“id”, log.getId());
 values.put(“data”, log.getNome());
 values.put(“usuario”, log.getUsuario().getId());
 database.insert(“log”, null, values);
 database.close();
 }
 public void update(Log log){
 SQLiteDatabase database = this.db.getWritableDatabase();
 ContentValues values = new ContentValues();
 values.put(“id”, log.getId());
 values.put(“data”, log.getNome());
 values.put(“usuario”, log.getUsuario().getId());
 return db.update(“log”, values, “id=?”, new String[] { 
 String.valueOf(log.getId()) });
 }
O Guia Definitivo de Android pra DBA’s
 public Log get(int id){
 Log log = new Log();
 String query = “SELECT id, data, usuario FROM log WHERE 
id = ”+id;
 SQLiteDatabase database = this.db.getWritableDatabase();
 Cursor cursor = database.rawQuery(query, null);
 if(cursor.moveToFirst()){
 log.setId(cursor.getInt(0));
 log.setData(cursor.getString(1));
 log.setSenha(cursor.getString(2));
 }
 databse.close();
 return usuario;
 }
 public Usuario list(){
 ArrayList<Usuario> list = new ArrayList<Usuario>();
 String query = “SELECT id, nome, senha FROM usuario;”;
 SQLiteDatabase database = this.db.getWritableDatabase();
 Cursor cursor = database.rawQuery(query, null);
 if(cursor.moveToFirst()){
 do{
 Usuario usuario = new Usuario();
 usuario.setId(cursor.getInt(0));
 usuario.setNome(cursor.getString(1));
 usuario.setSenha(cursor.getString(2));
 list.add(usuario);
 } while(cursor.moveToNext());
 }
 databse.close();
 return list;
 }
}
Desenvolvedor de sistemas desde os 16 anos, Jelsafá Rodrigues tem 
participado do desenvolvido sistemas web e mobile para grandes 
empresas brasileiras e internacionais. Apaixonado por podcasts, 
programação e empreendedorismo, ele acredita que trabalho duro 
e foco são as chaves para o sucesso.

Outros materiais