Criar tabelas e banco dados SQLite no Android

Atualmente, estamos evoluindo para um processamento e armazenamento nas nuvens. Com isso temos milhares de servidores trabalhando para gente. Então temos aplicações robustas, banco de dados, servidores, firewalls, protocolos e tudo sem requisitar desempenho do usuário. O celular está seguindo o mesmo caminho, porque não há muito poder de processamento e consequentemente o core do business fica no server. O papel do celular é pegar o dado fresco e exibir pro usuário. Porém algumas informações poderiam ser alocadas nos mesmos. Assim não seria necessário requisita servidor, ou armazenar informações mínimas de ultimo acesso. Aí entra no SQLite.

O SQLite é um  “banco de dados leve” feito para rodar em dispositivos com pouco poder de processamento.

No Android, podemos encontrar as classes SQLite que nos auxilia na criação e gerenciamento de um banco de dados.

Hoje vou mostrar um exemplo de como usar.

classe CourseData.java é o arquivo que representa o banco e a tabela.

Essa classe herda de SQLiteOpenHelper que auxilia na criação com seus métodos nativos. Tudo que vocÊ tem a fazer é montar a estrutura da sua tabela e banco com atributos (String, int, etc) e métodos (CreateTable).


import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class CourseData extends SQLiteOpenHelper {
 public static final String TABLE_NAME = "CLASSES";
 public static final String ID = "_id";
 public static final String PREFIX = "PREFIX";
 public static final String NUMBER = "NUMBER";
 private static final String DATABASE_NAME = "classes.db";
 private static final int DATABASE_VERSION = 1;

 public CourseData (Context ctx) {
 super (ctx, DATABASE_NAME, null, DATABASE_VERSION);
 }

 @Override
 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
 onCreate(db);
 }

 @Override
 public void onCreate(SQLiteDatabase db) {
 db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + ID
 + " INTEGER PRIMARY KEY AUTOINCREMENT, " + PREFIX + " TEXT NOT NULL, "
 + NUMBER + " INTEGER);");
 }

 public void onInsert(){

 }

}

Pronto! Agora temos um banco de dados. Agora vamos ver o que podemos fazer..

Vamos para a Activity e criar método para inserção, deleção, consulta e edição.

Na SqliteLab herda de Activity. Nela nos “criamos”(em aspas, porque os botões já foram criados no xml) os botoes de acao, que ao serem clicados executaram uma ação.

Como um atributo dessa classe temo o banco de dados


private CourseData cD;

Aconselho você a fazer isso com os cursores e adapters, pois você sempre terá que fecha-los. Assim você evita criar o mesmo objeto várias vezes e deixando os na memória o rendimento da aplicação cai.


db.close();

cursor.close();


import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;

public class SqliteLab extends Activity {
 private CourseData cD;
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 cD = new CourseData(this);

 Button retrieve = (Button)findViewById(R.id.Retrieve);
 Button add = (Button)findViewById(R.id.Add);
 Button change = (Button)findViewById(R.id.Change);
 Button delete = (Button)findViewById(R.id.Delete);

 delete.setOnClickListener(new OnClickListener() {

 @Override
 public void onClick(View v) {
 deleteFromDB();

 }
 });
 change.setOnClickListener(new OnClickListener() {

 @Override
 public void onClick(View v) {
 updateDB();

 }
 });

 retrieve.setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 displayRecords(populateCursor());
 }
 });
 add.setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 insertDB();
 }
 });
}
//metodo que cria um cursor e popula ele com os dados do banco
 private Cursor populateCursor(){
 String[] FROM = {CourseData.ID,CourseData.PREFIX,CourseData.NUMBER};
 SQLiteDatabase db = cD.getReadableDatabase();
 Cursor myC = db.query(CourseData.TABLE_NAME, FROM, null, null, null, null, null);
 startManagingCursor(myC);
 return myC;
}
//metodo que recebe o cursor ja populado e os "coloca" na ListView
 private void displayRecords(Cursor c){
 String[] from = {CourseData.ID,CourseData.PREFIX,CourseData.NUMBER};
 int[] to = new int[]{R.id.tvId,R.id.tvPrefix,R.id.tvNumber};
 ListView lv = ((ListView)findViewById(R.id.lvList));
 SimpleCursorAdapter rec = new SimpleCursorAdapter(this,R.layout.dbrow, c, from, to);
 lv.setAdapter(rec);
 c.close();
 }
 //Metodo que insere um registro no banco. Se voce reparar voce nao usa sql no codigo. Mas em qualquer caso, voce ainda pode usar.
 public void insertDB(){
 SQLiteDatabase db = cD.getWritableDatabase();
 ContentValues values = new ContentValues();
 //values.put(CourseData.ID,1);
 values.put(CourseData.PREFIX,"CSCI");
 values.put(CourseData.NUMBER,153);
 db.insert(CourseData.TABLE_NAME, null, values);
 db.close();
}
//metodo que atualiza um registro no banco
 public void updateDB(){
 SQLiteDatabase db = cD.getWritableDatabase();
 String where = "\"NUMBER\"=\"153\"";
 ContentValues values = new ContentValues();
 values.put(CourseData.NUMBER,151);
 db.update(CourseData.TABLE_NAME, values, where, null);
 db.close();

}
//metodo que deleta um retgistro do banco
 public void deleteFromDB(){
 SQLiteDatabase db = cD.getReadableDatabase();
 String where = "NUMBER=\"151\"";
 db.delete(CourseData.TABLE_NAME, where, null);
 db.close();
 }
}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

   	<Button android:layout_width="fill_parent"
   		android:layout_height="wrap_content"
   		android:id="@+id/Retrieve"
   		android:text = "Retrieve records"
   		/>
   	<Button android:layout_width="fill_parent"
   		android:layout_height="wrap_content"
   		android:id="@+id/Add"
   		android:text = "Add a record"
   		/>
   	<Button android:layout_width="fill_parent"
   		android:layout_height="wrap_content"
   		android:id="@+id/Change"
   		android:text = "Change record"
   		/>
   		<Button android:layout_width="fill_parent"
   		android:layout_height="wrap_content"
   		android:id="@+id/Delete"
   		android:text = "Delete records"
   		/>

    <ListView
	  	android:layout_width="wrap_content"
	  	android:layout_height="wrap_content"
	  	android:id="@+id/lvList"
	  	android:divider="@drawable/divider"
	  	android:dividerHeight="1px"
	  	/>

</LinearLayout>

e as linhas da ListView que irei fazer um posto so pra listview semana que vem!!

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	    android:orientation="horizontal"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    >
	<TextView xmlns:android="http://schemas.android.com/apk/res/android"
		android:id="@+id/tvId"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		/>
	<TextView xmlns:android="http://schemas.android.com/apk/res/android"
		android:id="@+id/tvPrefix"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:layout_marginLeft="2mm"
		>
	</TextView>
	<TextView xmlns:android="http://schemas.android.com/apk/res/android"
		android:id="@+id/tvNumber"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:layout_marginLeft="2mm"
		>
	</TextView>

</LinearLayout>

Se post foi util pra voce, da um Google+1 !!!

:D
Anúncios

Um comentário em “Criar tabelas e banco dados SQLite no Android

  1. E como faz quando eu já tenho meu banco preparado num “SQLite Database Browser” da vida? Ou seja, tenho um formulário de perguntas e antes eu não usava banco, agora fiz um e não quero criar um novo pelo android quero uar esse que já está devidamente populado. Como usá-lo?

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s