.
// Adding new contact 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 Number // Inserting Row db.insert(TABLE_CONTACTS, null , values); db.close(); // Closing database connection } |
⇒Reading Row(s)
The following method getContact() will read single contact row. It accepts id as parameter and will return the matched row from the database.
// Getting single contact 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 return contact; } |
getAllContacts() will return all contacts from database in array list format of Contact class type. You need to write a for loop to go through each contact.
// Getting All Contacts public List<Contact> getAllContacts() { List<Contact> contactList = new ArrayList<Contact>(); // 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; } |
getContactsCount() will return total number of contacts in SQLite database.
// 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(); } |
⇒Updating Record
updateContact() will update single contact in database. This method accepts Contact class object as parameter.
// 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 Record
deleteContact() will delete single contact from database.
// 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(); } |
Complete DatabaseHandler.java Code:
package com.androidhive.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 { // 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); } /** * 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<Contact> getAllContacts() { List<Contact> contactList = new ArrayList<Contact>(); // 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(); } } |
Usage:
package com.androidhive.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 ); /** * 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<Contact> 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); } } } |
Android Log Cat Report:
I am writing output to Log report. You can see your log report by going to Windows ⇒ Show View ⇒ Other.. ⇒ Android ⇒ Log Cat.
No comments:
Post a Comment