Monday, July 15, 2013

Re: [android-developers] Issue with SQLiteOpenHelper on android 2.X and 3.X

Maybe this SO-thread helps:
http://stackoverflow.com/questions/7647524/android-failed-to-setlocale-when-constructing-closing-the-database

On Mon, Jul 15, 2013 at 9:08 AM, Zoheb Rahman <zohebr@gmail.com> wrote:
> So i made a big mistake of testing my code on android 4.0 + and thinking it
> would work fine on other versions. But i am facing issues with 2.X and 3.X
> with SQLiteOpenHelper.
>
> First the code :
>
> public class HelperDB extends SQLiteOpenHelper implements BaseColumns {
>
> public static final int DATABASE_VERSION = 2;
> public static final String DATABASE_NAME = "MYDB.db";
> public static final String TABLE_NAME = "MYtable";
> public static final String TABLE_NAME_LOGO = "MYLogos";
> public static final String COLUMN_NAME_1 = "xxxxx";
> public static final String COLUMN_NAME_2 = "yyyy";
> public static final String COLUMN_NAME_3 = "zzzz";
> public static final String COLUMN_NAME_4 = "aaaa";
> public static final String COLUMN_NAME_LOGO = "logo";
> public static final String COLUMN_NAME_5 = "3333";
> public static final String COLUMN_NAME_6 = "fffff";
> public static final String COLUMN_NAME_7= "Abc";
>
> public HelperDB(Context context)
> {
> super(context, DATABASE_NAME, null, DATABASE_VERSION);
> }
>
> @Override
> public void onCreate(SQLiteDatabase db){
>
> db.execSQL("CREATE TABLE " + TABLE_NAME + "(" + _ID + " INTEGER PRIMARY
> KEY autoincrement," + COLUMN_NAME_1 + " TEXT not null," + COLUMN_NAME_2
> + " TEXT not null," + COLUMN_NAME_3 + " TEXT not null," +
> COLUMN_NAME_4 + " LONG not null," + COLUMN_NAME_5 + " INT DEFAULT 99," +
> COLUMN_NAME_6 +" INT DEFAULT 99);");
>
>
> db.execSQL("CREATE TABLE " + TABLE_NAME_LOGO + "(" + _ID + " INTEGER
> PRIMARY KEY autoincrement," + COLUMN_NAME_6 + " TEXT not null," +
> COLUMN_NAME_7 + " INTERGET not null);");
>
> }
>
> @Override
> public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
> {
>
> }
>
> }
> ******************************************************************************
>
> public class MatchesDB {
>
> private HelperDB dbHelper;
> private SQLiteDatabase dbw, dbr;
> public static int id;
>
> public MatchesDB(Context context){
>
> dbHelper = new HelperDB(context);
> dbw = dbHelper.getWritableDatabase();
> dbr = dbHelper.getReadableDatabase();
> }
>
> public void fillinfotable(){}
> And all other functions to query the database and delete etc
>
> Creating the DB by calling
>
> MatchesDB newdb = new MatchesDB(context);
> newdb.fillinfotable();
>
> All this is working perfectly on all 4.0 + devices. However i'm getting the
> following error when trying to run on 2.x devices
>
> 07-14 21:29:14.890: E/Database(22231): CREATE TABLE android_metadata failed
> 07-14 21:29:14.898: E/Database(22231): CREATE TABLE android_metadata failed
> 07-14 21:29:15.640: E/Database(22231): Failed to setLocale() when
> constructing, closing the database
> 07-14 21:29:15.640: E/Database(22231):
> android.database.sqlite.SQLiteException: database is locked
> 07-14 21:29:15.640: E/Database(22231): at
> android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method)
> 07-14 21:29:15.640: E/Database(22231): at
> android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:2000)
> 07-14 21:29:15.640: E/Database(22231): at
> android.database.sqlite.SQLiteDatabase. <init>(SQLiteDatabase.java:1857)
> 07-14 21:29:15.640: E/Database(22231): at
> android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:822)
> 07-14 21:29:15.640: E/Database(22231): at
> android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:856)
> 07-14 21:29:15.640: E/Database(22231): at
> android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:849)
> 07-14 21:29:15.640: E/Database(22231): at
> android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:556)
> 07-14 21:29:15.640: E/Database(22231): at
> android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203)
> 07-14 21:29:15.640: E/Database(22231): at
> android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118)
>
> Any help is Highly appreciated !! really want a quick fix as the app is
> already on the play store and i need to publish an update.
>
> I have followed the developers guide on the android website and have been
> searching for a solution and just cant seem to find anything anywhere
>
> --
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscribe@googlegroups.com
> 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 android-developers+unsubscribe@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>



--
Michael Banzon
http://michaelbanzon.com/

--
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
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 android-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

No comments:

Post a Comment