Programação para Dispositivos Móveis. Banco de Dados (SQLite)

Documentos relacionados
1. SQLite No Android 2. API de Acesso Listagem 1 SQLiteDatabase SQLiteOpenHelper Listagem 1 Android Studio SQLiteOpenHelper Android Studio

Programação para Dispositivos Móveis

Android Banco de Dados. Ivan Nicoli

Apresentação de um Processo Cria4vo de Desenvolvimento de uma App Android. Realização de Dinâmica Hands- On para Construção de uma App Android

Armazenamento de dados

Programação para Android. Aula 08: Persistência de dados SQL

Trabalhando com Mensagens. File > New > New Project. Uso de mensagens (Toast) Luiz Eduardo Guarino de Vasconcelos

Tutorial: Utilização do sqlite no Android (Parte I)

Mais Elementos da Interface com o Usuário. Prof. Fellipe Aleixo

Tutorial Android Speech

Login. Criar uma nova Activity. Login. Luiz Eduardo Guarino de Vasconcelos

Prof: Ricardo Quintão Site:

Retrofit. Criar um novo projeto. Selecionar a API. Retrofit para consumir Web Service Luiz Eduardo Guarino de Vasconcelos

Firebase. Acesse o site Acesse o menu Go to Console. Acesse com uma conta Google ou crie uma conta.

Criando as primeiras telas (Activity)

Tutorial de Manipulação de dados com SQLite

Programação para Dispositivos Móveis

Armazenamento em Banco de Dados em Aplicações Android. Prof. Fellipe Aleixo

Android e Bancos de Dados

Fragments. Criar um novo projeto. Selecionar a API. Navigation Drawer Activity. Fragments. Luiz Eduardo Guarino de Vasconcelos

Curso de Android - 2 Novas Activities. SECAP Prof. Rone Ilídio - UFSJ

Programação para a Plataforma Android Aula 11. Banco de Dados

Navegar entre páginas Necessário o uso de Intent. Intenção de ir a algum lugar, acessar outros recursos, outros apps.

PROPOSTA DE UM PADRÃO DE PROJETO PARA ANDROID UTILIZANDO A WEB

Android e Bancos de Dados

Desenvolvimento de Aplicativos Android

Introdução ao Android. SECAP 2014 Prof. Rone Ilídio - UFSJ

Tutorial sobre criação de regras de negócio para Android. Igor Rafael Santos da Silva

PROGRAMAÇÃO MOBILE Estudo de Caso

Mensagens. Para conhecimento. Renomear arquivos. Botão Direito no arquivo > Rafactor > Rename Shift + F6

Módulo 2 - Novas Activities Android. Programação Orientada a Objetos Prof. Rone Ilídio - UFSJ

Android BANCO DE DADOS - SQLITE. Prof. Joaquim assunção.

Módulo 4 - Interface Gráfica Gerenciadores de Layout. Programação Orientada a Objetos Prof. Rone Ilídio - UFSJ

Armazenamento de Dados

Programação de Dispositivos Móveis

Prof: Ricardo Quintão Site:

Android Core. Felipe Silveira felipesilveira.com.br. Aula 6

Android Layout Manager. Ivan Nicoli

Programação para Dispositivos Móveis

============================== Exemplo ListView MainActivity.java

Capítulo 02: Cadastro de Alunos

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Introdução ao Android. Programação Orientada a Objetos Prof. Rone Ilídio - UFSJ

Capítulo 04: Persistência com SQLite

Provedores de Conteúdo

Criando o primeiro projeto para entender a estrutura do app

Google Android. Uma abordagem prática e didática. Rafael Guimarães Sakurai. Esse livro está à venda em

AULA 3. Minicurso PET-EE UFRN

AULA 2. Minicurso PET-EE UFRN

Android I N T R O D U Ç Ã O À P R O G R A M A Ç Ã O P R O F E S S O R L E O N A R D O C. R. S O A R E S - L A R B A C K

Programação de Dispositivos Móveis

Programação para Android. Aula 05: Estilos e temas; galeria de imagens

Programando Intenções. Prof. Fellipe Aleixo

DESENVOLVIMENTO PARA DISPOSITIVOS MÓVEIS. PROFª. M.Sc. JULIANA H Q BENACCHIO

persistência de dados

Prof: Ricardo Quintão Site:

Projeto GoHome Tutorial Sobre o serviço do Google Maps no Android

Programação para a Plataforma Android Aula 2. Aula 2 Views

Android. Interfaces: widgets

Avisos e Notificações aos Usuários

Universidade Federal do Paraná

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

ANDROID APRENDIZ. Um guia para iniciantes Crie seu primeiro aplicativo Android

Módulo 3 - Intenções. SECAP 2014 Prof. Rone Ilídio - UFSJ

Android e Bancos de Dados

Inicia-se a produção do Caderno de Atividades sob a sua responsabilidade.

Programa de Dispositivos Móveis

Programação para Dispositivos Móveis. Sensores

Desenvolvimento Web II

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

TUTORIAL ANDROID ACTIVITY - CONSTRUÇÃO DE TELAS

Comunicação entre A0vidades

Android INTERFACE GRÁFICA & LAYOUT. Prof. Dr. Joaquim assunção.

Primeira Aplicação Android Olá Mundo. Prof. Fellipe Aleixo

Computação Móvel Gerenciadores de Layout (Ref. Cap. 6)

Desenvolvimento para Android Prá9ca 2. Prof. Markus Endler

Programação para Dispositivos Móveis

Desenvolvimento Web II

Usando e Gerenciando Activities

MODEL-VIEW-CONTROLER. Prof. Fellipe Aleixo

AULA 2 VISÃO BÁSICA DE CLASSES EM PHP

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc.

Programa de Dispositivos Móveis

PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE

Programação para a Plataforma Android Aula 16. Fragmentos

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc.

Capítulo 08: Layouts customizados

Usando o Eclipse - Fundamentos. Professor Vicente Paulo de Camargo

Armazenamento de Dados

Banco de Dados. -Aprendendo conceitos -Usando o SQL Conf para: -Conectar no banco de dados -Criar, alterar, excluir e consultar estruturas de tabelas

Android Activity. Ivan Nicoli

Programação para a Plataforma Android Aula 17. Broadcasts

Programação para Dispositivos Móveis. Activity e Intent

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE Ficha de Expectativa de Resposta da Prova Escrita

Introdução ao Android

Computação II Orientação a Objetos

Técni n c i as e L i L n i g n u g age g ns n p ara r Ba B nc n o d e D ados I ACCESS

Conexão com Banco de Dados

CONTEÚDO (técnico) COMPLETO DO TREINAMENTO INTENSIVO PARA ANDROID Universidade Android

Banco de Dados I Introdução SQL

Transcrição:

Programação para Dispositivos Móveis Banco de Dados (SQLite)

SQLite O Android possui suporte nativo ao SQLite O SQLite é um mecanismo de banco de dados SQL incorporado. Ao contrário da maioria dos outros bancos de dados SQL, o SQLite não possui um processo de servidor separado. O SQLite lê e grava diretamente em arquivos de disco comuns. Um banco de dados SQL completo com várias tabelas, índices, acionadores e visualizações está contido em um único arquivo de disco. Fonte: https://www.sqlite.org/about.html

SQLite O banco de dados criado pela aplicação ficará armazenado no sistema, podendo ser visualizado apenas pela aplicação que o criou.

SQLite Utilizaremos duas classes para a criação do banco de dados: SQLiteDatabase: Contém os métodos de manipulação dos dados no banco; SQLiteOpenHelper: Encapsula o processo de criação e atualização do banco de dados no dispositivo

Desenvolvendo uma aplicação com o uso de banco de dados

Aplicação Faremos um controle de biblioteca, com as oções: Cadastrar livro Alterar dados do livro Listar livros cadastrados Remover livros

Aplicação Faremos um controle de biblioteca, com as oções: Cadastrar livro Listar livros cadastrados Atualizar/Alterar dados do livro Remover livros Faremos o CRUD Acrônimo para: Create, Read, Update e Delete.

Aplicação Faremos um controle de biblioteca, com as oções: Cadastrar livro Listar livros cadastrados Atualizar/Alterar dados do livro Remover livros Faremos o CRUD Acrônimo para: Create, Read, Update e Delete.

Pacote BancoDados Criaremos no diretório de nosso projeto o pacote BancoDados Botão direito sobre o diretório Java >> New >> Package Dê o nome de BancoDados Dentro deste pacote criaremos duas classes Banco CRUD A classe Banco herdará os métodos oncreate e onupgrade da classe SQLiteOpenHelper Na classe CRUD colocaremos os métos de inserção, leitura, atualização e remoção de dados.

Classe Banco Este método é chamado quando a aplicação cria o banco de dados pela primeira vez. Nele criaremos as tabelas. public class Banco extends SQLiteOpenHelper { public Banco(Context context){ public void oncreate(sqlitedatabase db){ public void onupgrade(sqlitedatabase db, int oldversion, int newversion){

Classe Banco Este método será invocado quando precisarmos atualizar alguma informação estrutural (inserção ou remoção de colunas por exemplo) public class Banco extends SQLiteOpenHelper { public Banco(Context context){ public void oncreate(sqlitedatabase db){ public void onupgrade(sqlitedatabase db, int oldversion, int newversion){

Classe Banco Os dois métodos recebem como parâmetro uma instância do SQLiteDataBase, aqui chamada de db; O método onupgrade ainda recebe como parâmetros dois valores inteiros: um representando o valor antigo da tabela e o outro contém a nova versão para o qual o upgrade será executado

Classe Banco Criaremos então uma tabela chamada livros; Esta tabela terá os campos: id, titulo, autor e editora; Em SQL temos o seguinte comando para criação de tabelas: CREATE TABLE livros ( id integer primary key autoincrement, titulo text, autor text, editora text )

Classe Banco O mesmo código SQL visto anteriormente colocaremos dentro do método oncreate

Classe Banco public class Banco extends SQLiteOpenHelper { private static final String NOME_BANCO = "biblioteca.db"; private static final String TABELA = "livros"; O private mesmo static código final SQL String visto ID anteriormente = "_id"; colocaremos dentro do método private static final String TITULO = "titulo"; oncreate private static final String AUTOR = "autor"; private static final String EDITORA = "editora"; private static final int VERSAO = 1; public Banco(Context context){ public void oncreate(sqlitedatabase db){ String sql = "CREATE TABLE " + TABELA + "(" + ID + " integer primary key autoincrement," + TITULO + " text,"+ AUTOR + " text,"+ EDITORA + " text)"; db.exec(sql); //executa a string sql public void onupgrade(sqlitedatabase db, int oldversion, int newversion){

Classe Banco O método onupgrade possui um comando SQL que apaga a tabela antiga e invoca o método oncreate() para criar uma nova tabela.

Classe Banco public class Banco extends SQLiteOpenHelper { private static final String NOME_BANCO = "biblioteca.db"; private static final String TABELA = "livros"; private static final String ID = "_id"; private static final String TITULO = "titulo"; O private método static onupgrade final String possui AUTOR um comando = "autor"; SQL que apaga a tabela antiga e private static final String EDITORA = "editora"; invoca o método oncreate() para criar uma nova tabela. private static final int VERSAO = 1; public Banco(Context context){ public void oncreate(sqlitedatabase db){ String sql = "CREATE TABLE " + TABELA + "(" + ID + " integer primary key autoincrement," + TITULO + " text,"+ AUTOR + " text,"+ EDITORA + " text)"; db.exec(sql); //executa a string sql public void onupgrade(sqlitedatabase db, int oldversion, int newversion){ db.execsql("drop TABLE IF EXISTS livros"); oncreate(db);

Classe Banco Por fim, o construtor Banco envia para a super classe as informações do local e versão do banco

Classe Banco public class Banco extends SQLiteOpenHelper { private static final String NOME_BANCO = "biblioteca.db"; private static final String TABELA = "livros"; private static final String ID = "_id"; Por private fim, o static construtor final Banco String envia TITULO para = "titulo"; a super classe as informações do local e private static final String AUTOR = "autor"; versão do banco private static final String EDITORA = "editora"; private static final int VERSAO = 1; public Banco(Context context){ super(context, biblioteca.db,null,versao);//biblioteca.db é o nome do banco public void oncreate(sqlitedatabase db){ String sql = "CREATE TABLE " + TABELA + "(" + ID + " integer primary key autoincrement," + TITULO + " text,"+ AUTOR + " text,"+ EDITORA + " text)"; db.exec(sql); //executa a string sql public void onupgrade(sqlitedatabase db, int oldversion, int newversion){

Activities e CRUD Dividiremos o trabalho em duas fases Primeiramente criaremos as Activities do nosso projeto Depois, criaremos os métodos para a classe CRUD

Activity: Cadastrar Livros Está é a Activity para cadastrar livros no banco de dados; Nela teremos 3 TextViews, 3 EditTexts e 1 Button; O código como sugestão para esta activity encontra-se no próximo slide

Activity: Cadastrar Livros <LinearLayout xmlns:android="http://schemas.android.com/apk/res/a ndroid" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".activity_cadastrar" android:orientation="vertical" android:id="@+id/inserir"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="titulo:" android:id="@+id/textview"/> <EditText android:hint="digite o título do livro" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/edittext" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="autor:" android:id="@+id/textview2" /> <EditText android:hint="digite o nome do autor" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/edittext2" android:layout_below="@+id/textview2" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="editora:" android:id="@+id/textview3" /> <EditText android:hint="digite o nome da editora" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/edittext3" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="cadastrar" android:id="@+id/button" /> </LinearLayout>

Activity: Cadastrar Livros

Activity: Consulta Livros Para listarmos os livros do banco de dados, precisamos criar a interface; Teremos uma listview e um arquivo XML de layout responsável por estiliza-lá; O código como sugestão para esta activity encontra-se no próximo slide

Activity: Consulta Livros <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.constraintlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".activity_consulta"> <ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/listview" android:layout_alignparentleft="true" android:layout_alignparentstart="true" /> </android.support.constraint.constraintlayout>

Activity: Consulta Livros Agora vamos criar o estilo para a nossa activity Consulta Para isso, clique sobre o diretório layout >> New >> Layout resource file Dê o nome de livros_layout.xml O código como sugestão para este arquivo de layout encontra-se no próximo slide

Activity: Consulta Livros <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:columncount="2" android:rowcount="2" > <TextView android:id="@+id/idlivro" android:layout_width="0dip" android:layout_gravity="fill_horizontal" android:layout_height="wrap_content" android:layout_marginleft="5dp" android:layout_margintop="10dp" android:text="id" /> <TextView android:id="@+id/nomelivro" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginleft="5dp" android:layout_margintop="5dp" android:text="titulo" /> </GridLayout>

Activity: Alterar Livros A próxima activity será responsável por alterar os dados do livro Para alterar um dado contido no banco, devemos recuperar uma informação única de cada um deles e realizar a operação O código como sugestão para esta activity encontra-se no próximo slide

Activity: Alterar Livros <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".activity_cadastrar" android:id="@+id/alter"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="titulo:" android:id="@+id/textview4" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/edittext4" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="autor:" android:id="@+id/textview5" /> <EditText android:layout_width="match_parent" /> android:layout_height="wrap_content" android:id="@+id/edittext5" <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="editora:" android:id="@+id/textview6" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/edittext6" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="alterar" android:id="@+id/button2" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="deletar" android:id="@+id/button3"/> </LinearLayout>

Activity: Deletar Livros A opção de deletar será utilizada juntamente com a activity de alterar Desta forma, o botão deletar ficará no mesmo layout (activity) alterar

Classe CRUD Até o momento temos as Activities, porém ainda não existe nada codificado, nenhuma ação para elas foram implementadas Agora vamos colocar as ações na classe CRUD e codificar nossas Activities

Classe CRUD A classe CRUD será reponsável por controlar as manipulações ao banco. O código base desta classe encontra-se no próximo slide

Classe CRUD public class CRUD { private SQLiteDatabase db; private Banco banco; public CRUD(Context context){ //método construtor banco = new Banco(context); //objeto do tipo Banco

Inserir dados

Classe CRUD Método inseredados Na classe CRUD, criamos um construtor público e instanciamos o atributo banco, passando por parâmetro para a Activity o contexto Agora vamos criar o método inseredados que rebecerá como parâmetros o título, o autor e a editora Também teremos o atributo db que retorna o resultado do método getwritabledatabase(), permitindo o android a leitura e escrita de dados

Classe CRUD public class CRUD { private SQLiteDatabase db; private Banco banco; public CRUD(Context context){ //método construtor banco = new Banco(context); //objeto do tipo Banco public String inseredados(string titulo, String autor, String editora){ ContentValues valores; long resultado; db = banco.getwritabledatabase(); valores = new ContentValues(); valores.put(banco.titulo, titulo); valores.put(banco.autor, autor); valores.put(banco.editora, editora); resultado = db.insert(banco.tabela, null, valores); db.close(); if(resultado==-1) return "Erro ao inserir o registro"; else return "Registro inserido com sucesso";

Classe CRUD Método inseredados O método insert recebe como parâmetro a tabela em que os dados serão manipulados, um parâmetro nulo e o map com os dados que serão inseridos no banco Este map é criado pela classe ContentValue Lembre-se: é importante fechar a conexão com o banco depois de manipulá-lo

Classe CRUD Método inseredados O método insert recebe como parâmetro a tabela em que os dados serão manipulados, um parâmetro nulo e o map com os dados que serão inseridos no banco Este map é criado pela classe ContentValue Lembre-se: é importante fechar a conexão com o banco depois de manipulá-lo

Activity Cadastrar No próximo slide, apresento o código da Activity Cadastrar

public class Activity_Cadastrar extends AppCompatActivity { Button botao; @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_cadastrar); botao = (Button)findViewById(R.id.button); botao.setonclicklistener(new View.OnClickListener() { @Override public void onclick(view v) { CRUD crud = new CRUD(getBaseContext()); EditText titulo = (EditText)findViewById(R.id.editText); EditText autor = (EditText)findViewById((R.id.editText2)); EditText editora = (EditText)findViewById(R.id.editText3); String titulostring = titulo.gettext().tostring(); String autorstring = autor.gettext().tostring(); String editorastring = editora.gettext().tostring(); String resultado; resultado = crud.inseredados(titulostring,autorstring,editorastring); ); Toast.makeText(getApplicationContext(), resultado, Toast.LENGTH_LONG).show();

Activity Cadastrar O conteúdo dos EditTexts são capturados e convertidos para String. O método inseredado envia por parâmetro as informações a serem adicionadas no banco O resultado retornado do método, será exibido como uma mensagem (Toast) na tela mostrando se a operação foi um sucesso ou não.

Consulta Dados

Classe CRUD Método carregadados Na classe CRUD vamos adicionar o método carregadados(), equivalente ao SELECT em SQL, apesar de não utilizar nenhum comando SQL O código do método é apresentado no próximo slide

Classe CRUD Método carregadados public Cursor carregadados(){ Cursor cursor; String[] campos = {banco.id,banco.titulo; db = banco.getreadabledatabase(); cursor = db.query(banco.tabela, campos, null, null, null, null, null, null); if(cursor!=null){ cursor.movetofirst(); db.close(); return cursor;

Classe CRUD Método carregadados São definidos os campos que a consulta retornará no array de Strings campos O objeto db recebe retorno do método getreadabledatabase da classe Banco que fará com que os dados sejam acessados como somente para leitura O método query retorna um Cursor, uma classe do Android que salva as informações que são retornadas do banco de dados (tabela e os campos desejados). Antes do cursor ser retornado para ser tratado na interface do usuário deve-se mover seu conteúdo para a primeira posição para que todos os dados sejam exibidos (cursor.movetofirst())

Activity Consulta No próximo slide, apresento o código da Activity Consulta

public class Activity_Consulta extends AppCompatActivity { private ListView lista; @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_consulta); CRUD crud = new CRUD(getBaseContext()); final Cursor cursor = crud.carregadados(); String[] nomecampos = new String[] {Banco.ID, Banco.TITULO; int[] idviews = new int[] {R.id.idLivro, R.id.nomeLivro; SimpleCursorAdapter adaptador = new SimpleCursorAdapter(getBaseContext(), R.layout.livros_layout,cursor,nomeCampos,idViews, 0); lista = (ListView)findViewById(R.id.listView); lista.setadapter(adaptador); lista.setonitemclicklistener(new AdapterView.OnItemClickListener() { @Override public void onitemclick(adapterview<?> parent, View view, int position, long id) { String codigo; cursor.movetoposition(position); codigo = cursor.getstring(cursor.getcolumnindexorthrow(banco.id)); Intent intent = new Intent(Activity_Consulta.this, Activity_Alterar.class); intent.putextra("codigo", codigo); startactivity(intent); finish(); );

Activity Consulta A classe SimpleCursorAdapter é utilizada como adaptador para que os dados contidos no cursor sejam devidamente exibidos na tela. Um array de Strings deve ser criado para armazenar os campos que deverão ser mostrados no ListView

Altera Dados

Classe CRUD Método alteradados Na classe CRUD vamos adicionar o método carregadados(int id) A diferença entre o método anterior carregadados() e este, é que agora passamos por parâmetro o id da tupla de dados que desejamos atualizar Outra diferença é que aqui são recuperados todos os campos dentro do array de Strings Uma String chamadawhere é declarada para armazenar a cláusula WHERE, que diz ao banco de dados para devolver apenas registros com o determinado id passado por parâmetro O código do método é apresentado no próximo slide e deve ser inserido na classe CRUD

Classe CRUD Método alteradados public Cursor carregadadobyid(int id){ Cursor cursor; String[] campos = {banco.id,banco.titulo,banco.autor,banco.editora; String where = Banco.ID + "=" + id; db = banco.getreadabledatabase(); cursor = db.query(banco.tabela,campos,where, null, null, null, null, null); if(cursor!=null){ cursor.movetofirst(); db.close(); return cursor;

Activity Alterar No próximo slide, apresento o código da Activity Consulta

public class Activity_Alterar extends AppCompatActivity { EditText livro, autor, editora; Button alterar; Cursor cursor; CRUD crud; String codigo; Activity Alterar @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_alterar); codigo = this.getintent().getstringextra("codigo"); crud = new BancoController(getBaseContext()); livro = (EditText)findViewById(R.id.editText4); autor = (EditText)findViewById(R.id.editText5); editora = (EditText)findViewById(R.id.editText6); alterar = (Button)findViewById(R.id.button2); cursor = crud.carregadadobyid(integer.parseint(codigo)); livro.settext(cursor.getstring(cursor.getcolumnindexorthrow(criabanco.titulo))); autor.settext(cursor.getstring(cursor.getcolumnindexorthrow(criabanco.autor))); editora.settext(cursor.getstring(cursor.getcolumnindexorthrow(criabanco.editora))); alterar.setonclicklistener(new View.OnClickListener() { @Override public void onclick(view v) { crud.alteraregistro(integer.parseint(codigo), livro.gettext().tostring(),autor.gettext().tostring(), editora.gettext().tostring()); Intent intent = new Intent(Alterar.this,Consulta.class); startactivity(intent); finish(); );

Classe CRUD Para os dados serem alterados precisamos implementar o método alteraregisto na classe CRUD do banco de dados O método pode ser observado no próximo slide

public void alteraregistro(int id, String titulo, String autor, String editora){ ContentValues valores; String where; db = banco.getwritabledatabase(); where = Banco.ID + "=" + id; valores = new ContentValues(); valores.put(banco.titulo, titulo); valores.put(banco.autor, autor); valores.put(banco.editora, editora); db.update(banco.tabela,valores,where,null); db.close();

Deleta Dados

Classe CRUD Método deletadados O método para remover um registro do banco é apresentado no próximo slide

Classe CRUD Método deletadados public void deletaregistro(int id){ String where = Banco.ID + "=" + id; db = banco.getreadabledatabase(); db.delete(banco.tabela,where,null); db.close();

Classe CRUD Método deletadados Veja que os dados do banco serão apenas apagados e não manipulados. O método deletereceberá o nome da tabela e a cláusula where.

Activity Altera Dados Vamos colocar o botão deletar na mesma activity responsável por alterar os dados. Acrescente o código a seguir no xml da activity de alterar dados <Button android:layout_width= match_parent" android:layout_height="wrap_content" android:text="deletar" android:id="@+id/button3" />

Activity Altera Dados No arquivo java, adicione o listener para o botão responsável por deletar dados

Activity Altera Dados deletar = (Button)findViewById(R.id.button3); deletar.setonclicklistener(new View.OnClickListener() { @Override public void onclick(view v) { crud.deletaregistro(integer.parseint(codigo)); Intent intent = new Intent(Alterar.this,Consulta.class); startactivity(intent); finish(); );

Atividade 5 Crie uma activity chamada Inicio, ela deverá ser a activity inicial do aplicativo Quando o aplicativo for carregado, ele apresenta três opções: Inserir Livro (será responsável por cadastrar livro no APP) Alterar Livro (será responsável por alterar cadastro de livro no APP) Remover Livro (será responsável por remover livro no APP) Modifique a função listar livros para que ordene os livros por nome (ordem crescente) No Android Studio, vá em File >> Export to zip file gere um arquivo zip e envie pelo site