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.