TUTORIAL 7 : Base de dados - SQLite (fonte : androidhive.info)
Android fornece várias maneiras de armazenar os dados do usuário e aplicativo. SQLite é uma forma de armazenar os dados do usuário. SQLite é um banco de dados muito leve que vem com sistema operacional Android. Neste tutorial vamos estar discutindo como escrever classes para lidar com todas as operações SQLite.
Neste tutorial eu estou tomando um exemplo de contactos do usuário para armazenar no banco de dados SQLite. Estaremos estou usando uma tabela chamada Contacts para armazenar os contactos do usuário. Esta tabela contém três colunas id (INT), name (texto), phone_number (TEXT). |
Escrevendo Contacto Classe
package com.mjaz.androidsqlite; |
Escrevendo Classe Handler banco de dados SQLite
Precisamos escrever a nossa própria classe para lidar com todos dados CRUD (criar, ler, atualizar e excluir) operações.
1. Criar um novo projeto, vá para Arquivo ⇒ New Project Android. 2. Uma vez que o projeto é criado, criar uma nova classe no seu diretório src do projeto e nomeá-lo como DatabaseHandler.java (clique direito em src / pacote ⇒ ⇒ New Class) 3. Agora estenda sua classe DatabaseHandler.java de SQLiteOpenHelper. public class DatabaseHandler extends SQLiteOpenHelper { 4. Depois de estender sua classe de SQLiteOpenHelper você precisará substituir dois métodos onCreate () e onUpgrage () onCreate () - Estes é que temos de escrever CREATE TABLE. Esta base de dados é chamado quando é criada.
ONUPGRADE () - Este método é chamado quando o banco de dados é actualizado como modificar a estrutura da tabela, adicionando restrições ao banco de dados, etc, public class DatabaseHandler extends SQLiteOpenHelper { ⇒ Todas as operações CRUD (Create, Read, Update and Delete)
Agora precisamos escrever métodos para lidar com todos os banco de dados de operações de leitura e escrita. Aqui estamos implementando seguintes métodos para a nossa mesa de contratos.
//Adicionando novo contacto ⇒ Inserir novo registro
O método AddContact () aceita contato objeto como parâmetro. Precisamos construir parâmetros contentValues usando o objeto de contato. Uma vez os dados inseridos no banco de dados, precisamos fechar a conexão com o banco.
// Adicionando novo contacto ⇒ Leitura Tuplas (Rows)
O seguinte método GetContact () irá ler linha de contacto único. Ele aceita id como parâmetro e vai retornar a tupla acompanhado do banco de dados. //Buscando contacto getAllContacts () irá retornar todos os contatos do banco de dados em formato de lista de matriz de contato tipo de classe. Você precisa escrever um loop for para percorrer cada contato.
// Buscando todos contactos getContactsCount () irá retornar o número total de contactos em banco de dados SQLite.
public int getContactsCount() { ⇒ Atualizando Registros
updateContact () irá atualizar contacto único no banco de dados. Este método aceita objeto de classe contato como parâmetro. public int updateContact(Contact contact) { ⇒ Excluindo um Registro
deleteContact () apaga um único contacto do banco de dados. public void deleteContact(Contact contact) { |
Conclua DatabaseHandler.java Código:
package com.mjaz.androidsqlite;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHandler extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
// Nome da Base de Dados
private static final String DATABASE_NAME = "contactsManager";
private static final String TABLE_CONTACTS = "contacts";
private static final String KEY_ID = "id";
private static final String KEY_NAME = "name";
private static final String KEY_PH_NO = "phone_number";
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
+ KEY_PH_NO + " TEXT" + ")";
db.execSQL(CREATE_CONTACTS_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);
onCreate(db);
}
public void addContact(Contact contact) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_NAME, contact.getName()); // Contact Name
values.put(KEY_PH_NO, contact.getPhoneNumber()); // Contact Phone
db.insert(TABLE_CONTACTS, null, values);
db.close();
}
public Contact getContact(int id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID,
KEY_NAME, KEY_PH_NO }, KEY_ID + "=?",
new String[] { String.valueOf(id) }, null, null, null, null);
if (cursor != null)
cursor.moveToFirst();
Contact contact = new Contact(Integer.parseInt(cursor.getString(0)),
cursor.getString(1), cursor.getString(2));
return contact;
}
public List<Contact> getAllContacts() {
List<Contact> contactList = new ArrayList<Contact>();
String selectQuery = "SELECT * FROM " + TABLE_CONTACTS;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
Contact contact = new Contact();
contact.setID(Integer.parseInt(cursor.getString(0)));
contact.setName(cursor.getString(1));
contact.setPhoneNumber(cursor.getString(2));
contactList.add(contact);
} while (cursor.moveToNext());
}
return contactList;
}
public int updateContact(Contact contact) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_NAME, contact.getName());
values.put(KEY_PH_NO, contact.getPhoneNumber());
return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?",
new String[] { String.valueOf(contact.getID()) });
}
public void deleteContact(Contact contact) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_CONTACTS, KEY_ID + " = ?",
new String[] { String.valueOf(contact.getID()) });
db.close();
}
public int getContactsCount() {
String countQuery = "SELECT * FROM " + TABLE_CONTACTS;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
cursor.close();
return cursor.getCount();
}
}
Uso:
package com.mjaz.androidsqlite;import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
public class AndroidSQLiteTutorialActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DatabaseHandler db = new DatabaseHandler(this);
Log.d("Insert: ", "Inserting ..");
db.addContact(new Contact("MJAZ", "9100000000"));
db.addContact(new Contact("Bullet", "9199999999"));
db.addContact(new Contact("Toni", "9522222222"));
db.addContact(new Contact("Arch", "9533333333"));
Log.d("Reading: ", "Reading all contacts..");
List<Contact> contacts = db.getAllContacts();
for (Contact cn : contacts) {
String log = "Id: "+cn.getID()+" ,Name: " + cn.getName() + " ,Phone: " + cn.getPhoneNumber();
Log.d("Name: ", log);
}
}
}