Pages

Saturday 20 August 2011

How to create Sqlite databse in sdcard

I was looking for the proper solution for creating database in sdcard android after many crashes and links i made the code.

package com.android.database;

import java.io.File;

import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.util.Log;

public class DatabaseHelper

{
	private static final String TAG  = "DatabaseHelper";
	public static final String  DATABASE_FILE_PATH = "/sdcard";
	public static final String  DATABASE_NAME = "testDatabase";

	private static final String TRACKS_TABLE_CREATE =
		"create table if not exists casecategory (_id INTEGER primary key autoincrement, "
		+ "category_name TEXT not null);";
	
	private SQLiteDatabase database;
	
	public DatabaseHelper()
	{  
		try
		{
//			database = SQLiteDatabase.openDatabase(DATABASE_FILE_PATH + File.separator + DATABASE_NAME, null,SQLiteDatabase.OPEN_READWRITE + SQLiteDatabase.CREATE_IF_NECESSARY);
			database = SQLiteDatabase.openOrCreateDatabase(DATABASE_FILE_PATH + File.separator + DATABASE_NAME, null);
			createTables();
		}

		catch (SQLiteException ex)
		{
//			createTables();
			Log.e(TAG, "error -- " + ex.getMessage(), ex);
		}
		finally
		{
			DatabaseUtil.closeDataBase(database);
		}
	}

	private void createTables()
	{
		try {
			database.execSQL(TRACKS_TABLE_CREATE);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public void close()
	{
		DatabaseUtil.closeDataBase(database);
	}

	public SQLiteDatabase getReadableDatabase()
	{
		database = SQLiteDatabase.openDatabase(DATABASE_FILE_PATH

				+ File.separator + DATABASE_NAME, null,

				SQLiteDatabase.OPEN_READONLY);
		return database;
	}

	public SQLiteDatabase getWritableDatabase()
	{
		database = SQLiteDatabase.openDatabase(DATABASE_FILE_PATH

				+ File.separator + DATABASE_NAME, null,

				SQLiteDatabase.OPEN_READWRITE);

		return database;
	}
}


package com.android.database;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class DatabaseUtil
{
	public static void closeCursor(Cursor cursor)
	{
		if (cursor != null)
		{
			cursor.close();
		}
	}

	public static void closeDataBase(SQLiteDatabase database)
	{
		if (database != null)
		{
			database.close();
		}
	}
}



package com.android.database;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class DBAdapter {

	private DatabaseHelper databaseHelper;
	private SQLiteDatabase database;
	
	public DBAdapter open() throws Exception{
		databaseHelper = new DatabaseHelper();
		database = databaseHelper.getWritableDatabase();
		return this;
	}
	
	public boolean insertIntoTable(){
		try {
			database.execSQL("insert into casecategory values('5','v2');");
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}
	
	public Cursor getData(){
		return database.rawQuery("select _id,category_name from casecategory;", null);
	}
	
	public void close() throws Exception{
		database.close();
	}
	
}



package com.android.sdcardDatabase;

import com.android.database.DBAdapter;

import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.Toast;

public class SdCardDatabaseActivity extends Activity {

	/** Called when the activity is first created. */

	DBAdapter dbAdapter;
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);


		dbAdapter = new DBAdapter();
		try {
			dbAdapter.open();
		} catch (Exception e) {
			e.printStackTrace();
		}

		setContentView(R.layout.main);
		//		
		boolean flag = dbAdapter.insertIntoTable();
		if(flag==true){
			Toast.makeText(this,"True  ",Toast.LENGTH_LONG).show();
		}else{
			Toast.makeText(this,"False  ",Toast.LENGTH_LONG).show();
		}



		Cursor c = dbAdapter.getData();
		if (c != null ) {
			if  (c.moveToFirst()) {
				do {
					String firstName = c.getString(c.getColumnIndex("category_name"));
					System.out.println("fir ::"+firstName);
				}while (c.moveToNext());
			} 
		}
	}
	
	@Override
	protected void onDestroy() {
		super.onDestroy();
		try {
			dbAdapter.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
}

10 comments:

  1. Hi,
    Thax for the great tutorial and it would be great if you share the source code of this project. It would be more helpfull.

    Regards,
    Padma.

    ReplyDelete
  2. plz give me full source code

    ReplyDelete
  3. I am placed a sqlite db file created from sqlite browser when i try to read it its coming up error as no such table can you please help

    ReplyDelete
  4. what if im using SQLiteOpenHelper? actually your code is working but im attached from sqliteOpenHelper. but didnt work, can you help ?

    ReplyDelete
  5. Thanks but on my Samsung SM-J320ZN Android 5.1.1, API 22 .. the database is placed on the Device. Any ideas?

    ReplyDelete