Quantcast
Channel: Programming Forums
Viewing all articles
Browse latest Browse all 51036

How to work with Android SQLite Database

$
0
0
Android provides several ways to store user and app data. SQLite is one way of storing user data. SQLite is a very light weight database which comes with Android OS. In this tutorial I’ll be discussing how to write classes to handle all SQLite operations.

In this tutorial I am taking an example of storing user contacts in SQLite database. I am using a table called Contacts to store user contacts. This table contains three columns id (INT),name (TEXT), phone_number(TEXT).

Content

Step 1: Writing Contact Class
Step 2: Writing SQLite Database Handler Class
Step 3: All CRUD Operations (Create, Read, Update and Delete)
Step 4:Usage on main activity
Step 5: View your result of working
Following is the structure of contacts table.

Table Contacts
Field Type Key
id int PK
name text
phone_number text
Step 1: Writing Contact Class

Before you go further you need to write your Contact class with all getter and setter methods to maintain single contact as an object.

package niceandroid.net.androidsqlite;
 
/**
 *
 * @author 9android.net
 *
 */
public class Contact {
 
    //private variables
    int _id;
    String _name;
    String _phone_number;
 
    // Empty constructor
    public Contact(){
 
    }
    // constructor
    public Contact(int id, String name, String _phone_number){
        this._id = id;
        this._name = name;
        this._phone_number = _phone_number;
    }
 
    // constructor
    public Contact(String name, String _phone_number){
        this._name = name;
        this._phone_number = _phone_number;
    }
    // getting ID
    public int getID(){
        return this._id;
    }
 
    // setting id
    public void setID(int id){
        this._id = id;
    }
 
    // getting name
    public String getName(){
        return this._name;
    }
 
    // setting name
    public void setName(String name){
        this._name = name;
    }
 
    // getting phone number
    public String getPhoneNumber(){
        return this._phone_number;
    }
 
    // setting phone number
    public void setPhoneNumber(String phone_number){
        this._phone_number = phone_number;
    }
}

Step 2: Writing SQLite Database Handler Class

We need to write our own class to handle all database CRUD(Create, Read, Update and Delete) operations.

Create a new project by going to File ⇒ New Android Project.
Once the project is created, create a new class in your project src directory and name it as DatabaseHandler.java ( Right Click on src/package ⇒ New ⇒ Class)
Now extend your DatabaseHandler.java class from SQLiteOpenHelper.
public class DatabaseHandler extends SQLiteOpenHelper
After extending your class from SQLiteOpenHelper you need to override two methods onCreate() and onUpgrage()
onCreate()
– These is where we need to write create table statements. This is called when database is created.

onUpgrade()
– This method is called when database is upgraded like modifying the table structure, adding constraints to database etc.,
package niceandroid.net.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;
 
/**
 *
 * @author 9android.net
 *
 */
public class DatabaseHandler extends SQLiteOpenHelper {
 
    // All Static variables
    // Database Version
    private static final int DATABASE_VERSION = 1;
 
    // Database Name
    private static final String DATABASE_NAME = "contactsManager";
 
    // Contacts table name
    private static final String TABLE_CONTACTS = "contacts";
 
    // Contacts Table Columns names
    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);
    }
 
    // Creating Tables
    @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);
    }
 
    // Upgrading database
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // Drop older table if existed
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);
 
        // Create tables again
        onCreate(db);
    }

Step 3: All CRUD Operations (Create, Read, Update and Delete)

Now we need to write methods for handling all database read and write operations. Here we are implementing following methods for our contacts table.

/**
 * All CRUD(Create, Read, Update, Delete) Operations
 */
 
// Adding new contact
 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
 
// Inserting Row
 db.insert(TABLE_CONTACTS, null, values);
 db.close(); // Closing database connection
 }
 
// Getting single contact
 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
 return contact;
 }
 
 // Getting All Contacts
 public List getAllContacts() {
 List contactList = new ArrayList();
 // Select All Query
 String selectQuery = "SELECT * FROM " + TABLE_CONTACTS;
 
SQLiteDatabase db = this.getWritableDatabase();
 Cursor cursor = db.rawQuery(selectQuery, null);
 
// looping through all rows and adding to list
 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));
 // Adding contact to list
 contactList.add(contact);
 } while (cursor.moveToNext());
 }
 
// return contact list
 return contactList;
 }
 
// Updating single contact
 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());
 
// updating row
 return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?",
 new String[] { String.valueOf(contact.getID()) });
 }
 
// Deleting single contact
 public void deleteContact(Contact contact) {
 SQLiteDatabase db = this.getWritableDatabase();
 db.delete(TABLE_CONTACTS, KEY_ID + " = ?",
 new String[] { String.valueOf(contact.getID()) });
 db.close();
 }
 // Getting contacts Count
 public int getContactsCount() {
 String countQuery = "SELECT * FROM " + TABLE_CONTACTS;
 SQLiteDatabase db = this.getReadableDatabase();
 Cursor cursor = db.rawQuery(countQuery, null);
 cursor.close();
 
// return count
 return cursor.getCount();
 }
[b]Step 4:Usage on main activity[/b]

package niceandroid.net.androidsqlite;
 
import java.util.List;
 
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
 
/**
 * Main activity
 * @author 9android.net
 *
 */
public class AndroidSQLiteTutorialActivity extends Activity {
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 
 DatabaseHandler db = new DatabaseHandler(this);
 
 /**
 * CRUD Operations
 * */
 // Inserting Contacts
 Log.d("Insert: ", "Inserting ..");
 db.addContact(new Contact("Ravi", "9100000000"));
 db.addContact(new Contact("Srinivas", "9199999999"));
 db.addContact(new Contact("Tommy", "9522222222"));
 db.addContact(new Contact("Karthik", "9533333333"));
 
 // Reading all contacts
 Log.d("Reading: ", "Reading all contacts..");
 List contacts = db.getAllContacts();
 
 for (Contact cn : contacts) {
 String log = "Id: "+cn.getID()+" ,Name: " + cn.getName() + " ,Phone: " + cn.getPhoneNumber();
 // Writing Contacts to log
 Log.d("Name: ", log);
 
 }
 }
}

Step 5: View your result of working

I am writing output to Log report. You can see your log report by going to Windows ⇒ Show View ⇒ Other.. ⇒ Android ⇒ Log Cat.



And this is the result of working:

Posted Image

You can download source code here
Posted Image


Download sourcecode tuitorial of sqlite database for android

This tuitorial refer by www.9android.net

Viewing all articles
Browse latest Browse all 51036

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>