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

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

Programação para Dispositivos Móveis

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

Armazenamento de dados

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

Armazenamento de Dados

Android Banco de Dados. Ivan Nicoli

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

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

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

Android e Bancos de Dados

Tutorial de Manipulação de dados com SQLite

Armazenamento de Dados

Android e Bancos de Dados

Desenvolvimento de Aplicações Móveis com HTML5

persistência de dados

Android e Bancos de Dados

Android #4. antonio deusany de carvalho junior

Flickr, shindotv/ / BASES DE DADOS. Laboratórios de Informática João Paulo Barraca, André Zúquete, Diogo Gomes

Provedores de Conteúdo

ROOM: Biblioteca de Mapeamento Objeto-Relacional. Prof. Fellipe Aleixo

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

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

15 - Introdução às Bases de Dados

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

Duas propostas para recuperar ficheiros apagados no Android

Importar e Exportar Dados

Benvindo ao Curso de Introdução ao Firebird com Ferramenta de Relatórios!

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Android e Bancos de Dados


Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz /05/13. Questão: Total Pontos: Gráu:

Herança e Polimorfismo

Tutorial C# Inserção de dados em MySQL

GLPI Gestão total e gratuita do seu parque informático

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

MongoDB: Manipular a base de dados NoSQL no Windows 10

Microsoft Launcher - O seu smartphone sincronizado com o PC

Programação Orientada a Objetos II

Aprenda a instalar o GLPI no Centos 6.5

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

Vamos falar de Hibernate?

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

Configurar e usar o Voltar ao meu Mac

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

Começando com o AWS IoT

Tutorial C# - Nova temporada

Computação II Orientação a Objetos

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Mundo Arduino: Vamos começar a programar?

Windows Server 2008 Vamos criar um domínio

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

Tutorial C# - ADO.NET

Profa. Thienne Johnson EACH/USP

Transforme o seu Raspberry PI num servidor de DNS

Quer correr o Mac OS X El Capitan no seu computador?

Computação II Orientação a Objetos

Tutorial C# - Delegates e Eventos...

Aplicação MVC com Class Library

REST. Representational State Transfer. É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades.

Sumário. SQL - Criação de Tabelas. Structured Query Language. SQL Versões. André Restivo. October 18, 2010

Capítulo 04: Persistência com SQLite

NOTA: Neste tutorial foi utilizado o Visual Studio 2010 para criar o Projeto Web no qual iremos realizar os passos abaixo.

Usando o Eclipse - Fundamentos. Professor Vicente Paulo de Camargo

Computação II Orientação a Objetos

Lista de exercícios I - RESPOSTAS Servlets e banco de dados

NAS Synology DS213j Primeiras configurações (Parte I)

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Sabe usar o Google Maps em modo Offline no Android e no ios?

ICE-B Sqlite e Python. Ludwig Krippahl

2 Vectores de objectos

Sabe fazer backups do Windows 10? E recuperar ficheiros?

Programação Orientada por Objectos 2010/11. 2º Exame 28 de Junho de 2011

TUTORIAL ANDROID ACTIVITY - CONSTRUÇÃO DE TELAS

Classes e Objetos POO

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

Padrões de Projeto. Padrões de Projeto. Além dos 23 Padrões GoF. Os 23 Padrões de Projeto. Documentação de um Padrão. Classificação dos Padrões

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

9 Classes Abstractas e Interfaces

Linguagem de Programação II Implementação

C# - Conexão com MySQL


Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Extensão de classes em Java - noções elementares - PCO / PPO Departamento de Informática Faculdade de Ciências da Universidade de Lisboa

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Interfaces e Classes Internas

Como sincronizar contactos do icloud com o Gmail

Integração por Web Services

Bases de Dados. DDL Data Definition Language

Sumário. Ficheiros. Ficheiros

SQL Básica DDL. Prof. Marcos A. Schreiner. 21 de outubro de Curso de Licenciatura em Computação

Programação por Objectos. Java

5 aplicações da Microsoft essenciais para utilizadores do Android

Aprenda a usar a Firewall do Windows 8 (Parte I)

Input / Output na linguagem java. Para isso usamos um dos construtores da classe java.io.file:

Transcrição:

Tutorial: Utilização do sqlite no Android (Parte I) Date : 7 de Abril de 2012 Por Mário Baltazar para o Pplware Tutorial realizado no âmbito do Mestrado em Computação Móvel do Instituto Politécnico da Guarda na Unidade Curricular de Seminário A plataforma Android foi introduzida no mercado pela Google em 2007 e é composta por um sistema operativo embebido e um conjunto de aplicações que integram com a plataforma. Além das várias inovações implementadas, o Android traz também suporte nativo para o SQLite. O SQLite é uma pequena biblioteca, desenvolvida em linguagem C, que implementa um amplo subconjunto do standard SQL 92, sendo a sua reputação proveniente da combinação do motor de base de dados com a interface dentro de uma única biblioteca. As aplicações que usam SQLite podem ter assim acesso a uma base de dados racional SQL, sem a necessidade de correrem processos RDBMS (relational database management system) em separado e sem grandes overheads. O SQLite foi desenvolvido em 2000 e é actualmente uma base de dados amplamente adoptada em dispositivos móveis, suportando até 2 TB de dados. Este artigo será dividido em duas partes e hoje vamos começar por ensinar como criar uma pequena aplicação para registo de contactos, sendo esses contactos guardados na base dados sqlite. http://www.pplware.com Pplware 1 / 6

Vamos então começar com o desenvolvimento da aplicação, usando para isso a ferramenta de desenvolvimento eclipse. 1 Criar Projecto Criação de um novo projecto no Eclipse com o nome: Contactos File > New > Other > Android/Android Project http://www.pplware.com Pplware 2 / 6

2 Criar uma nova classe com nome DbHelper Esta classe será responsável por criar a base de dados no momento em que a aplicação é instalada (método oncreate) e actualizá-la para novas versões(método onupgrade). 2.1 - A classe DB expande a classe SQLiteOpenHelper, esta fornece os métodos getreadabledatabase() e getwriteabledatabase(), que permitem aceder à base dados SQLiteDatabase quer para ler quer para escrever. public class DbHelper extends SQLiteOpenHelper { } 2.2 - Adicionar os imports necessários para a classe: import android.content.context; import android.database.sqlite.sqli tedatabase; import android.database.sqlite.sqliteopenhelper; import android.util.log; 2.3 - Adicionar as constantes necessárias: private static final int DATABASE_VERSION = 1; public static final St ring ID = "_id"; public static final String NOME = "nome"; public st atic final String EMAIL = "email"; public static final String TELEFON E = "telefone"; public static final String FOTO = "foto"; private st atic final String DATABASE_CREATE = "create table " + TABLE_NAME + "( " + ID + " integer primary key autoincrement, " + NOME + " text not null, " + EMAIL + " text not null, " + TELEFONE+" text not null" + ", "+ FOTO +" BLOB);"; 2.4 - Fazer @override das classes necessárias: @Override public void oncreate(sqlitedatabase db) { db.execsql(database_create); } @Override public void onupgrade(sql itedatabase db, int oldversion, int newversion) { Log.w(Db Helper.class.getName(), "Upgrading database from version " + oldversio n + " to " + newversion + ", which will destroy all old data"); db.execsql("drop TABLE IF EXISTS " + TABLE_NAME); oncreate(d b); } http://www.pplware.com Pplware 3 / 6

2.5 - No final a classe terá um aspecto parecido com o seguinte: public class DbHelper extends SQLiteOpenHelper { private st atic final String DATABASE_NAME = "contactos4.db"; public s tatic final String TABLE_NAME = "contactos2"; private stati c final int DATABASE_VERSION = 1; public static final Strin g ID = "_id"; public static final String NOME = "nome"; public static final String EMAIL = "email"; public static final String TELEFONE = "telefone"; public static fi nal String FOTO = "foto"; private static final String DATAB ASE_CREATE = "create table " + TABLE_NAME + "( " + ID + " integer pr imary key autoincrement, " + NOME + " text not null, " + EMAIL + " te xt not null, " + TELEFONE+" text not null" + ", "+ FOTO +" BLOB);"; public DbHelper(Context context) { super( context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void oncreate(sqlitedatabase db) { db.execsql(database_create); } @Override public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { Log.w(DbHelper.class.getName(), "Upgrading database from version " + oldversion + " to " + newversion + ", which will destroy all old data"); db.execsql("drop TABLE IF EXISTS " + TABLE_NAME); oncreate(db); } } 4- Criar nova classe DBAdapter que será a classe base para trabalhar com SQLite. Esta irá permitir abrir, fechar, fazer queries e actualizar a base de dados. 4.1 - Criar nova classe DBAdapter public class DBAdapter { } 4.2 - Adicionar os imports necessários para a aplicação: import java.io.bytearrayoutputstream; import java.util.arraylist; im port java.util.list; import android.content.contentvalues; import an droid.content.context; import android.database.cursor; import androi d.database.sqlexception; import android.database.sqlite.sqlitedatabas e; import android.graphics.bitmap; import android.graphics.bitmapfac tory; 4.3 - Adicionar os Atributos necessários para a classe: http://www.pplware.com Pplware 4 / 6

private SQLiteDatabase database; private DbHelper dbhelper; privat e String[] allcolumns = { DbHelper.ID, DbHelper.NOME, DbHelper.EMAIL, DbHelper.TELEFONE, DbHelper.FOTO}; 4.4 - Declarar construtor da classe que irá inicializar uma instância da classe DbHelper. public DBAdapter(Context context) { er(context); } dbhelper = new DbHelp Um Context é um handle para o sistema, que fornece serviços como resources, acesso a base de dados e preferências. O contexto da aplicação (application context) é o repositório central para a funcionalidade de todas as aplicações de nível superior no Android. Usa-se este contexto quando queremos aceder a configurações e recursos compartilhados entre as várias janelas (activities) da aplicação. 4.5 - Criar método para criar um novo contacto na base de dados, este irá retornar um objecto Contacto. public Contacto createcontacto(string nome, String email, String tel efone, Bitmap foto) { ContentValues values = new Content Values(); values.put(db.nome, nome); value s.put(db.email,email); values.put(db.telefone,telefone); ByteArrayOutputStream baos = new ByteArrayOutputStream( ); foto.compress(bitmap.compressformat.png, 100, baos); byte[] photo = baos.tobytearray(); values. put(db.foto, photo); long insertid = database.insert(db. TABLE_NAME, null, values); // To show how to query Cursor cursor = database.query(db.table_name, allcolumns, DB.ID + " = " + insertid, null,null, null, null); cursor.movetofirst(); return cursortocontacto(cursor); } Os cursores são apontadores de dados da base de dados ou seja, uma interface que permite o acesso aos dados retornados pela query. O objecto ContentValues permite definir os valores a inserir. 4.6 - Método para eliminar um contacto: public void EliminaContacto (int idcontacto){ databa se.delete(dbhelper.table_name, DbHelper.ID + " = " + idcontacto, http://www.pplware.com Pplware 5 / 6

Powered by TCPDF (www.tcpdf.org) null); } 4.7 - Método para devolver um Contacto passando como parâmetro um cursor. private Contacto cursortocontacto(cursor cursor) { by te[] blob = cursor.getblob(cursor.getcolumnindex(db.foto)); Bitmap bmp = BitmapFactory.decodeByteArray(blob, 0, blob.length); Contacto contacto = new Contacto(cursor.getLong(0),cursor.getString(1),cursor.getString(2), cu rsor.getstring(3),bmp); return contacto; } 4.8 - Método para devolver todos os contactos da tabela: public Cursor getcontactos(){ Cursor cursor = database.rawquery("select _id, nome,telefone,foto from contactos 2", null); return cursor; } 4.9 - Método que devolve o contacto passando como parâmetro o id do contacto pretendido: public Contacto getcontacto (int idcontacto){ Cursor cu rsor = database.query(db.table_name, allcolumns, DB.ID + " = " + idcontacto, null,null, null, null); cursor.moveto First(); return cursortocontacto(cursor); } Terminamos agora a criação das classes auxiliares para trabalhar com a base de dados, no próximo tutorial iremos criar os layouts e utilizar estas classes para guardar os dados na base de dados. http://www.pplware.com Pplware 6 / 6