While Android puts a powerful built-in database at your disposal, it doesn't come with the best set of debugging tools. In fact, unless you have a rooted device, you can't even get the SQLitetables off your device without jumping through some hoops. Fortunately, the Android emulatordoesn't have this restriction.
This walk-thru demonstrates how I generally debug SQLite tables. If you aren't familiar with SQLite tables on Android, read my TechRepublic article, "Use SQLite to create a contacts browser in Android."
1. This tutorial doesn't cover CRUD operations for SQLite; however, we do need data to debug in order to demonstrate the technique. I used the short code snippet below to create a sample database.
package com.authorwjf.sqlitetablemaker; import android.os.Bundle;import android.widget.Toast; import android.app.Activity; import android.database.sqlite.SQLiteDatabase; public class MainActivity extends Activity { private static final String SAMPLE_DB_NAME = "TrekBook"; private static final String SAMPLE_TABLE_NAME = "Info"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SQLiteDatabase sampleDB = this.openOrCreateDatabase(SAMPLE_DB_NAME, MODE_PRIVATE, null); sampleDB.execSQL("CREATE TABLE IF NOT EXISTS " + SAMPLE_TABLE_NAME + " (LastName VARCHAR, FirstName VARCHAR," + " Rank VARCHAR);"); sampleDB.execSQL("INSERT INTO " + SAMPLE_TABLE_NAME + " Values ('Kirk','James, T','Captain');"); sampleDB.close(); Toast.makeText(this, "DB Created!", Toast.LENGTH_LONG).show(); } }
2. The second step is to open an emulator that contains the table you want to browse. In this instance using Eclipse, I opened a new emulator and loaded the sqlitetablemaker.apk on it (Figure A).
Figure A
3. Within Eclipse, you need to switch to DDMS mode by going to Window | Open Perspective | DDMS. If you've never used DDMS, you'll likely need to go to Window | Open Perspective | Other and then browse for DDMS within the list (Figures B and C).
Figure B
Figure C
4. Once the DDMS view is active, choose the File Explorer tab. You'll find your database in the /data/data/your.app.namespace/databases directory. There are two virtually indistinguishable icons in the upper right-hand corner of the tab that represent a pull and a push of a file, respectively. Use the pull icon (the one on the left) to save a copy of the SQLite database to your development machine (Figure D).
Figure D
5. Now you have a copy of your database on your workstation, but you still need some kind of SQLite viewer to take a peek. I use SQLite Database Browser, because it is free and runs on my Wintel, Mac, and Ubuntu boxes.
6. Open the database and inspect the data (Figure E).
Figure E
While it's not terribly difficult to get a look at the SQLite tables you create in your Android apps, it requires quite a few steps. And remember this only works with the emulator -- if you need to debug SQLite tables on an actual device, you’ll need to create an export function that copies the database to the SD card, at which point you can follow this walk-thru to open the tables.
I hope future versions of the Android development tools will make this process less painful. Until then, you may want to save this article!