Você está na página 1de 8

Paradigmas de Linguagem de Programao

Aula 08 Unidade Jundia

Plano de Ensino Introduo. Arquitetura da Plataforma Android. Iniciando a Programao. Widgets. Layouts. Alertas. Menus. Bancos de Dados.

Livro-Texto Bibliografia Bsica:


PAULA FILHO, Wilson de Padua. Multimdia: Conceitos e Aplicaes. 1 ed. Rio de Janeiro: LTC Livros Tcnicos e Cientficos, 2000.

Bibliografia Complementar:
ALLEN, Grant. Beginning Android 4. 1 ed.: Apress, 2011.

8. BD SQLite O BD no Android formado pelo SQLite encapsulado, um Banco de Dados Open Source que suporta bancos relacionais com sintaxe SQL, transaes e comandos. Necessita de pouca memria em tempo de execuo, aproximadamente 250KB. SQLite suporta os tipos de dados:
TEXT (similar String em Java), INTEGER (similar ao long em Java) e REAL (similar ao double em Java). Todos os outros tipos devem ser convertidos em um destes campos antes de se salvar no BD.

SQLite no valida se os tipos escritos nas colunas so do mesmo tipo definido; voc pode escrever um inteiro em uma coluna string e vice-versa.

8. BD SQLite O BD SQLite est disponvel em cada dispositivo com Android. Utilizar o SQLite no Android no necessita de qualquer configurao ou administrao de banco de dados. O nico trabalho definir os comandos SQL para criao e atualizao da base de dados. Aps isso ele automaticamente gerenciado por voc atravs da plataforma Android. Acessar um banco de dados SQLite envolve acesso ao filesystem, que lento, porm recomendado em operaes assncronas.

8. BD SQLite Quando voc criar um banco de dados, ele fica armazenado no diretrio default: DATA/data/APP_NAME/databases/FILENAME. As partes do diretrio anterior so construdas baseadas nas seguintes regras:
DATA caminho que o mtodo Environment.getDataDirectory() retorna. APP_NAME nome da aplicao. FILENAME nome que voc especifica no cdigo da sua aplicao para o banco de dados.

8. BD Classes Mtodos da classe SQLiteOpenHelper: cria e atualiza um banco de dados na aplicao Android.
onCreate() mtodo responsvel em criar o BD. onUpgrade() mtodo responsvel em atualizar o BD. getReadableDatabase() acesso ao BD para leitura. getWriteableDatabase() acesso ao BD para gravao.

8. BD Classes Mtodos da classe SQLiteDatabase: trabalha com o BD SQLite: abertura/fechamento, consulta/atualizao.


insert() mtodo responsvel em inserir registros no BD. update() mtodo responsvel em atualizar registros do BD. delete() mtodo responsvel em excluir registros do BD. execSQL() permite executar um comando SQL diretamente. rawquery() executa consultas diretamente no BD.

8. BD Classes
query() executa consultas estruturadas no BD. Parmetros:
String dbName nome da tabela para execuo da query. int[] columnNames lista de colunas de tabela para retorno; NULL retorna todas as colunas. String whereClause clusula where para selao de dados; NULL retorna todos os dados. String[] selectionArgs pode incluir ?s na clusula where; que sero trocados por valores no array selectionArgs. String[] groupBy agrupamento de colunas; NULL no agrupa. String[] having filtro de grupos; NULL no filtra. String[] orderBy colunas que sero utilizadas para ordenamento; NULL no ordena.

8. BD Classes Mtodos da classe Cursor: representa o resultado da query e aponta uma linha do resultado da query; bufferizando a informao de forma eficiente. Desta forma o Android no carrega todos os dados na memria.
getCount() retorna o nmero de elementos da query resultante. moveToFirst() movimenta o cursor para o primeiro registro. moveToNext() movimenta o cursor para o prximo registro. isAfterLast() verifica se o cursor chegou no fim da query. get*() mtodos getLong(index), getString(index) para acesso coluna de dados na posio atual. getColumnIndexOrThrow(String) retorna o ndice da coluna dado um nome de coluna da tabela. close() fecha o cursor.

8. BD Exemplo

11

8. BD Exemplo DBHelper
import import import import android.content.Context; android.database.sqlite.SQLiteDatabase; android.database.sqlite.SQLiteOpenHelper; android.util.Log;

public class DBHelper extends SQLiteOpenHelper { private static final String DATABASE_CREATE = "create table clientes " + "(id integer primary key autoincrement, " + "nome text not null);"; public DBHelper(Context context) { super(context, "clientes.db", null, 1); }

8. BD Exemplo DBHelper
public void onCreate(SQLiteDatabase database) { database.execSQL(DATABASE_CREATE); } public void onUpgrade(SQLiteDatabase db, int v1, int v2) { Log.w(DBHelper.class.getName(), "Atualizando BD da verso " + v1 + " para " + v2 + ", que apagar dados antigos!"); db.execSQL("DROP TABLE IF EXISTS clientes"); onCreate(db); } }

8. BD Exemplo AdaptadorDB
import import import import import android.content.ContentValues; android.content.Context; android.database.Cursor; android.database.SQLException; android.database.sqlite.SQLiteDatabase;

public class AdaptadorDB { private SQLiteDatabase database; private DBHelper dbHelper; private String[] colunas = { "id", "nome" }; public AdaptadorDB(Context context) { dbHelper = new DBHelper(context); }

8. BD Exemplo AdaptadorDB
public void open() throws SQLException { database = dbHelper.getWritableDatabase(); } public void close() { dbHelper.close(); } public String criarCliente(String nome) { ContentValues values = new ContentValues(); values.put("nome", nome); long novoId = database.insert("clientes", null, values); return (novoId + " - " + nome); }

8. BD Exemplo AdaptadorDB
public void apagarCliente(long id) { database.delete("clientes", "id = " + id, null); } public String listarClientes() { String lista = ""; Cursor cursor = database.query("clientes", colunas, null, null, null, null, null); cursor.moveToFirst();

8. BD Exemplo AdaptadorDB
while (!cursor.isAfterLast()) { lista = lista + (cursor.getLong(0) + " - " + cursor.getString(1)) + "\n"; cursor.moveToNext(); } cursor.close(); return lista; } }

8. BD Exemplo Main
import import import import import android.os.Bundle; android.app.Activity; android.view.View; android.view.View.OnClickListener; android.widget.*;

public class Main extends Activity { private AdaptadorDB datasource; private EditText id, nome, log; private Button add, del;

8. BD Exemplo Main
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); datasource = new AdaptadorDB(this); datasource.open(); id = (EditText) findViewById(R.id.edtID); nome = (EditText) findViewById(R.id.edtNome); log = (EditText) findViewById(R.id.edtResultado); add = (Button) findViewById(R.id.btnAdd); del = (Button) findViewById(R.id.btnDel); add.setOnClickListener(onClick_add); del.setOnClickListener(onClick_del); }

8. BD Exemplo Main
public void onClick(View view) {} OnClickListener onClick_add = new OnClickListener() { public void onClick(View v) { String cliente = datasource.criarCliente( nome.getText().toString()); log.append("ADD: " + cliente); log.append("\n-----------------------\n"); log.append(datasource.listarClientes()); } };

8. BD Exemplo Main
OnClickListener onClick_del = new OnClickListener() { public void onClick(View v) { datasource.apagarCliente( Integer.parseInt(id.getText().toString())); log.append("DEL: " + id.getText()); log.append("\n-----------------------\n"); log.append(datasource.listarClientes()); } };

8. BD Exemplo Main
protected void onResume() { datasource.open(); super.onResume(); } protected void onPause() { datasource.close(); super.onPause(); } }

Paradigmas de Linguagem de Programao Aula 08


Cincia da Computao clayton.valdo@aedu.com