Database is important thing in programming. Many of our code always use data to be processed and saved. Just like any other programming environment, Android support database programming too. You can use default database supported by android, SQLiteDatabase. So, in this tutotial we are going to create database and making table in database. After that we will perform operation like, insert, update, delete and display data from databse.
We are going to use DatabaseHelper class, this class extends SQLiteOpenHelper. Now SQLiteOpenHelper is as shown below.
A helper class to manage database creation and version management.
You create a subclass implementing onCreate(SQLiteDatabase), onUpgrade(SQLiteDatabase, int, int)and optionally onOpen(SQLiteDatabase), and this class takes care of opening the database if it exists, creating it if it does not, and upgrading it as necessary. Transactions are used to make sure the database is always in a sensible state.
We are also going to use class SQLiteDatabase, It is described as following,
Exposes methods to manage a SQLite database.
SQLiteDatabase has methods to create, delete, execute SQL commands, and perform other common database management tasks.
See the Notepad sample application in the SDK for an example of creating and managing a database.
Database names must be unique within an application, not across all applications.
Now, coming to our example, database name is “books” and database table is “titles” and we have following list of columns in our table titles
“_id”;
“isbn”;
“title”;
“publisher”;
Following is code of file DBAdapter.class, this handles all the functionality of database like creating database and table, insert, delete and update of table and fetching values from table. You can download pd file here DBAdapter
public class DBAdapter { public static final String KEY_ROWID = "_id"; public static final String KEY_ISBN = "isbn"; public static final String KEY_TITLE = "title"; public static final String KEY_PUBLISHER = "publisher"; private static final String TAG = "DBAdapter"; private static final String DATABASE_NAME = "books"; private static final String DATABASE_TABLE = "titles"; private static final int DATABASE_VERSION = 1; private static final String DATABASE_CREATE = "create table titles (_id integer primary key autoincrement, " + "isbn text not null, title text not null, " + "publisher text not null);"; private final Context context; private DatabaseHelper DBHelper; private SQLiteDatabase db; public DBAdapter(Context ctx) { this.context = ctx; DBHelper = new DatabaseHelper(context); } private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(DATABASE_CREATE); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data"); db.execSQL("DROP TABLE IF EXISTS titles"); onCreate(db); } } //---opens the database--- public DBAdapter open() throws SQLException { db = DBHelper.getWritableDatabase(); return this; } //---closes the database--- public void close() { DBHelper.close(); } //---insert a title into the database--- public long insertTitle(String isbn, String title, String publisher) { ContentValues initialValues = new ContentValues(); initialValues.put(KEY_ISBN, isbn); initialValues.put(KEY_TITLE, title); initialValues.put(KEY_PUBLISHER, publisher); return db.insert(DATABASE_TABLE, null, initialValues); } //---deletes a particular title--- public boolean deleteTitle(long rowId) { return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0; } //---retrieves all the titles--- public Cursor getAllTitles() { return db.query(DATABASE_TABLE, new String[] { KEY_ROWID, KEY_ISBN, KEY_TITLE, KEY_PUBLISHER}, null,null,null,null,null); } //---retrieves a particular title--- public Cursor getTitle(long rowId) throws SQLException { Cursor mCursor = db.query(true, DATABASE_TABLE, new String[] { KEY_ROWID, KEY_ISBN, KEY_TITLE, KEY_PUBLISHER }, KEY_ROWID + "=" + rowId, null,null,null,null,null); if (mCursor != null) { mCursor.moveToFirst(); } return mCursor; } //---updates a title--- public boolean updateTitle(long rowId, String isbn, String title, String publisher) { ContentValues args = new ContentValues(); args.put(KEY_ISBN, isbn); args.put(KEY_TITLE, title); args.put(KEY_PUBLISHER, publisher); return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0; } }
Now coming to our main file DatabaseActivity.class that extends Activity. Here we will create object of class DBAdapter and use the functionality of it. Here is the whole code. You can download pd file here DatabaseActivity.class
public class DatabaseActivity extends Activity { DBAdapter db; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); db = new DBAdapter(this); System.out.println("bool1"); insert(); disAll(); //update(); //dis(3); //del(5); } private void update(){ db.open(); if (db.updateTitle(1, "0470285818", "C# 2008 Programmer's Reference", "Wrox Press")) Toast.makeText(this, "Update successful.", Toast.LENGTH_LONG).show(); else Toast.makeText(this, "Update failed.", Toast.LENGTH_LONG).show(); //------------------- //---retrieve the same title to verify--- Cursor c = db.getTitle(1); if (c.moveToFirst()) DisplayTitle(c); else Toast.makeText(this, "No title found", Toast.LENGTH_LONG).show(); //------------------- db.close(); } private void insert(){ db.open(); long id; id = db.insertTitle( "0470285819", "Teach yourself Java", "Wrox"); id = db.insertTitle( "047017661y", "Professional Windows 07 Gadgets Programming", "Wrox"); System.out.println("bool211"); db.close(); } private void disAll(){ db.open(); /*Cursor c = db.getAllTitles(); if (c.moveToFirst()) { do { System.out.println("bool2"); DisplayTitle(c); } while (c.moveToNext()); } else System.out.println("boo3l");*/ try{ Cursor c = db.getAllTitles(); if (c.moveToFirst()) { do { System.out.println("bool2"); DisplayTitle(c); } while (c.moveToNext()); } }catch(Exception e){ System.out.println(e); } db.close(); } private void dis(int j){ db.open(); Cursor c = db.getTitle(j); if (c.moveToFirst()) DisplayTitle(c); else Toast.makeText(this, "No title found", Toast.LENGTH_LONG).show(); db.close(); } private void del(int j){ db.open(); if (db.deleteTitle(j)) Toast.makeText(this, "Delete successful.", Toast.LENGTH_LONG).show(); else Toast.makeText(this, "Delete failed.", Toast.LENGTH_LONG).show(); db.close(); } public void DisplayTitle(Cursor c) { System.out.println("bool"); Toast.makeText(this, "id: " + c.getString(0) + "\n" + "ISBN: " + c.getString(1) + "\n" + "TITLE: " + c.getString(2) + "\n" + "PUBLISHER: " + c.getString(3), Toast.LENGTH_LONG).show(); } }
Following are the links of other Post on Android.
Android : ContextMenu & SubMenu
Android : Sliding Drawer
Android Countdown Timer
Getting started with Android Map View: Displaying a location by Marker
Simple Progress Bar in Android using Thread
Android listview with image and text
Android : Connecting to MySQL using PHP
Manage & Developed by Sptechnolab.com