I figured it out and yes I was using multiple databases. One per provider.
So you're right this is what was causing the issue! :-)


On 7 September 2013 20:14, Nobu Games <[email protected]> wrote:

> This error can happen when you try to open the same database (file)
> multiple times. Which in turn can happen when you are using multiple
> instances of SQLiteOpenHelper. So where do you create the instance of
> "database"?
>
>
> On Saturday, September 7, 2013 8:52:44 AM UTC-5, Eurig Jones wrote:
>>
>> Quite frequently I get the following exception and I'm really entirely
>> sure what to do about it.
>>
>>     java.lang.RuntimeException: An error occured while executing
>> doInBackground()
>>         at android.os.AsyncTask$3.done(**AsyncTask.java:200)
>>         at java.util.concurrent.**FutureTask$Sync.**
>> innerSetException(FutureTask.**java:274)
>>         at java.util.concurrent.**FutureTask.setException(**
>> FutureTask.java:125)
>>         at java.util.concurrent.**FutureTask$Sync.innerRun(**
>> FutureTask.java:308)
>>         at java.util.concurrent.**FutureTask.run(FutureTask.**java:138)
>>         at java.util.concurrent.**ThreadPoolExecutor.runWorker(**
>> ThreadPoolExecutor.java:1088)
>>         at java.util.concurrent.**ThreadPoolExecutor$Worker.run(**
>> ThreadPoolExecutor.java:581)
>>         at java.lang.Thread.run(Thread.**java:1019)
>>     Caused by: android.database.sqlite.**SQLiteException: error code 5:
>> database is locked
>>         at android.database.sqlite.**SQLiteStatement.native_**execute(Native
>> Method)
>>         at android.database.sqlite.**SQLiteStatement.execute(**
>> SQLiteStatement.java:61)
>>         at android.database.sqlite.**SQLiteDatabase.delete(**
>> SQLiteDatabase.java:1704)
>>         at azurewing.android.db.provider.**NotificationProvider.delete(**
>> NotificationProvider.java:80)
>>         at azurewing.android.db.provider.**Provider.delete(Provider.java:
>> **87)
>>         at azurewing.android.db.provider.**NotificationProvider.delete(**
>> NotificationProvider.java:1)
>>         at android.content.**ContentProvider$Transport.**
>> delete(ContentProvider.java:**234)
>>         at android.content.**ContentResolver.delete(**
>> ContentResolver.java:692)
>>         at azurewing.android.db.table.**NotificationTable.**
>> removeAllNotifications(**NotificationTable.java:89)
>>         at azurewing.android.sync.**SyncReceiver$1$1.**
>> doInBackground(SyncReceiver.**java:52)
>>         at azurewing.android.sync.**SyncReceiver$1$1.**
>> doInBackground(SyncReceiver.**java:1)
>>         at android.os.AsyncTask$2.call(**AsyncTask.java:185)
>>         at java.util.concurrent.**FutureTask$Sync.innerRun(**
>> FutureTask.java:306)
>>         ... 4 more
>>
>> I am accessing a ContentProvider (NotificationProvider here) via an
>> AsyncTask. The ContentProvider uses a database of course.
>>
>>     @Override
>>     public int delete(Uri uri, String selection, String[] selectionArgs)
>>     {
>>         SQLiteDatabase  db = database.getWritableDatabase()**;
>>         int numDeleted = database.delete(**NotificationTable.TABLE_NAME,
>> selection, selectionArgs);
>>         return numDeleted;
>>     }
>>
>> I'm a bit stumped about what to do here. It's clearly a threading issue I
>> think, so I'm thinking of everytime I get the database, I do it from a
>> synchronized method in 1 class. Is this a good idea?
>>
>  --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
> ---
> You received this message because you are subscribed to a topic in the
> Google Groups "Android Developers" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/android-developers/0PuIfWyRfUI/unsubscribe
> .
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to