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();
}
}
}