3

I am having an Android app with read only local sqlite database.

Also I have use Sqlite Asset Manager for the local database.

import android.content.Context;

import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;

public class DbHelper extends SQLiteAssetHelper {

private static final String DATABASE_NAME="Calculator.db";
private static final int DATABASE_VERSION=2;

//Constructor
public DbHelper(Context context)
{
    super(context,DATABASE_NAME,null,DATABASE_VERSION);
    setForcedUpgrade(2);
}

}

And DatabaseAccess.java Class Looks like

    private SQLiteOpenHelper openHelper;
    private SQLiteDatabase db;
    private static DatabaseAccess instance;
    Cursor c=null;
//private Constructor so that object cannot be created from outside
private DatabaseAccess(Context context)
{
    this.openHelper=new DbHelper(context);
}


public static DatabaseAccess getInstance(Context context)
{
    if(instance==null)
    {
        instance=new DatabaseAccess(context);
    }
    return instance;
}

//to open database
public void open(){

    this.db=openHelper.getWritableDatabase();
}

//closing the database
public void close(){
    if(db!=null){
        this.db.close();
    }
}

//Different functions to query the database }

Now I am getting app crashes on my developer console

java.lang.IllegalStateException: 
  at android.view.View$DeclaredOnClickListener.onClick (View.java:5647)
  at android.view.View.performClick (View.java:6614)
  at android.view.View.performClickInternal (View.java:6587)
  at android.view.View.access$3100 (View.java:787)
  at android.view.View$PerformClick.run (View.java:26122)
  at android.os.Handler.handleCallback (Handler.java:873)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loop (Looper.java:201)
  at android.app.ActivityThread.main (ActivityThread.java:6820)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:547)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:922)
Caused by: java.lang.reflect.InvocationTargetException: 
  at java.lang.reflect.Method.invoke (Native Method)
  at android.view.View$DeclaredOnClickListener.onClick (View.java:5642)
Caused by: android.database.sqlite.SQLiteDatabaseLockedException: 
  at android.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount (Native Method)
  at android.database.sqlite.SQLiteConnection.executeForChangedRowCount (SQLiteConnection.java:748)
  at android.database.sqlite.SQLiteSession.executeForChangedRowCount (SQLiteSession.java:754)
  at android.database.sqlite.SQLiteStatement.executeUpdateDelete (SQLiteStatement.java:64)
  at android.database.sqlite.SQLiteDatabase.executeSql (SQLiteDatabase.java:1771)
  at android.database.sqlite.SQLiteDatabase.execSQL (SQLiteDatabase.java:1698)
  at android.database.sqlite.SQLiteDatabase.setVersion (SQLiteDatabase.java:965)
  at com.readystatesoftware.sqliteasset.SQLiteAssetHelper.getWritableDatabase (SQLiteAssetHelper.java:183)
  at com.tech.Example.DatabaseAccess.open (DatabaseAccess.java:32)

Although I have tried to replicate this scenario on my device but i am unable to do so.

Unable to find the mistake as application is not crashing in all the devices but a very few devices.

Please help.

Ankit Sahu
  • 31
  • 2

0 Answers0