mrdynabyte
mrdynabyte

Reputation: 21

Illegal argument exception with a renamed SQLite column

I'm getting that exception because of a calling to a method that executes a query. The thing is that it shows me that a column doesn't exists, and actually I renamed it an created again the database. Strangely, the calling keeps asking me the column in the "Columns[]" argument of query(), but if I add it, it keeps asking me that again. I don't understand. The column is named 'bookmark_title' renamed to 'title' Do you have any hint?. Thank you very much.

Method calling:

    public Cursor bookmarksURLs(int user_id){

    Cursor result;
    String bookmarks="bookmarks";
    String [] columns={"_id","bookmark_url","title","bookmark_title","fk_user_bookmark"};
    String where = "fk_user_bookmark = 1";          
    try {
        result = db.query(bookmarks,columns,where,null,null,null,null);         
        return result;
    } catch (SQLiteException e){
        Log.v("Query","Error en el query");
        e.printStackTrace();
    }
    return null;
}

Log without including of "bookmark_title"

10-22 17:42:34.604: INFO/ActivityManager(58): Starting activity: Intent { cmp=example.android.com/.BookmarkList }
    10-22 17:42:34.824: INFO/System.out(335): Base de datos abierta
    10-22 17:42:34.835: DEBUG/AndroidRuntime(335): Shutting down VM
    10-22 17:42:34.835: WARN/dalvikvm(335): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
    10-22 17:42:34.855: ERROR/AndroidRuntime(335): FATAL EXCEPTION: main
    10-22 17:42:34.855: ERROR/AndroidRuntime(335): java.lang.RuntimeException: Unable to start activity ComponentInfo{example.android.com/example.android.com.BookmarkList}: java.lang.IllegalArgumentException: column 'bookmark_title' does not exist
    10-22 17:42:34.855: ERROR/AndroidRuntime(335):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
    10-22 17:42:34.855: ERROR/AndroidRuntime(335):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
    10-22 17:42:34.855: ERROR/AndroidRuntime(335):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
    10-22 17:42:34.855: ERROR/AndroidRuntime(335):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
    10-22 17:42:34.855: ERROR/AndroidRuntime(335):     at android.os.Handler.dispatchMessage(Handler.java:99)
    10-22 17:42:34.855: ERROR/AndroidRuntime(335):     at android.os.Looper.loop(Looper.java:123)
    10-22 17:42:34.855: ERROR/AndroidRuntime(335):     at android.app.ActivityThread.main(ActivityThread.java:4627)
    10-22 17:42:34.855: ERROR/AndroidRuntime(335):     at java.lang.reflect.Method.invokeNative(Native Method)
    10-22 17:42:34.855: ERROR/AndroidRuntime(335):     at java.lang.reflect.Method.invoke(Method.java:521)
    10-22 17:42:34.855: ERROR/AndroidRuntime(335):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    10-22 17:42:34.855: ERROR/AndroidRuntime(335):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    10-22 17:42:34.855: ERROR/AndroidRuntime(335):     at dalvik.system.NativeStart.main(Native Method)
    10-22 17:42:34.855: ERROR/AndroidRuntime(335): Caused by: java.lang.IllegalArgumentException: column 'bookmark_title' does not exist
    10-22 17:42:34.855: ERROR/AndroidRuntime(335):     at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:314)
    10-22 17:42:34.855: ERROR/AndroidRuntime(335):     at android.widget.SimpleCursorAdapter.findColumns(SimpleCursorAdapter.java:312)
    10-22 17:42:34.855: ERROR/AndroidRuntime(335):     at android.widget.SimpleCursorAdapter.<init>(SimpleCursorAdapter.java:87)
    10-22 17:42:34.855: ERROR/AndroidRuntime(335):     at example.android.com.BookmarkList.onCreate(BookmarkList.java:22)
    10-22 17:42:34.855: ERROR/AndroidRuntime(335):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    10-22 17:42:34.855: ERROR/AndroidRuntime(335):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
    10-22 17:42:34.855: ERROR/AndroidRuntime(335):     ... 11 more
    10-22 17:42:34.885: WARN/ActivityManager(58):   Force finishing activity example.android.com/.BookmarkList
    10-22 17:42:34.885: WARN/ActivityManager(58):   Force finishing activity example.android.com/.AndroidBoorkmarksActivity
    10-22 17:42:35.384: WARN/ActivityManager(58): Activity pause timeout for HistoryRecord{4508e9e0 example.android.com/.BookmarkList}
    10-22 17:42:45.746: WARN/ActivityManager(58): Activity destroy timeout for HistoryRecord{44fd28a8 example.android.com/.AndroidBoorkmarksActivity}
    10-22 17:42:45.765: WARN/ActivityManager(58): Activity destroy timeout for HistoryRecord{4508e9e0 example.android.com/.BookmarkList}

Log with including of "bookmark_title"

 10-22 17:51:57.455: WARN/System.err(528): android.database.sqlite.SQLiteException: no such column: bookmark_title: , while compiling: SELECT _id, bookmark_url, title, bookmark_title, fk_user_bookmark FROM bookmarks WHERE fk_user_bookmark = 1
10-22 17:51:57.465: WARN/System.err(528):     at android.database.sqlite.SQLiteCompiledSql.native_compile(Native Method)
10-22 17:51:57.465: WARN/System.err(528):     at android.database.sqlite.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91)
10-22 17:51:57.465: WARN/System.err(528):     at android.database.sqlite.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64)
10-22 17:51:57.465: WARN/System.err(528):     at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:80)
10-22 17:51:57.475: WARN/System.err(528):     at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:46)
10-22 17:51:57.475: WARN/System.err(528):     at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42)
10-22 17:51:57.475: WARN/System.err(528):     at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1345)
10-22 17:51:57.485: WARN/System.err(528):     at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1229)
10-22 17:51:57.485: WARN/System.err(528):     at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1184)
10-22 17:51:57.495: WARN/System.err(528):     at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1264)
10-22 17:51:57.495: WARN/System.err(528):     at example.android.com.DatabaseHandler.bookmarksURLs(DatabaseHandler.java:53)
10-22 17:51:57.495: WARN/System.err(528):     at example.android.com.BookmarkList.onCreate(BookmarkList.java:17)
10-22 17:51:57.505: WARN/System.err(528):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-22 17:51:57.505: WARN/System.err(528):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
10-22 17:51:57.505: WARN/System.err(528):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
10-22 17:51:57.505: WARN/System.err(528):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
10-22 17:51:57.515: WARN/System.err(528):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
10-22 17:51:57.515: WARN/System.err(528):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-22 17:51:57.515: WARN/System.err(528):     at android.os.Looper.loop(Looper.java:123)
10-22 17:51:57.515: WARN/System.err(528):     at android.app.ActivityThread.main(ActivityThread.java:4627)
10-22 17:51:57.525: WARN/System.err(528):     at java.lang.reflect.Method.invokeNative(Native Method)
10-22 17:51:57.525: WARN/System.err(528):     at java.lang.reflect.Method.invoke(Method.java:521)
10-22 17:51:57.525: WARN/System.err(528):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-22 17:51:57.525: WARN/System.err(528):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-22 17:51:57.525: WARN/System.err(528):     at dalvik.system.NativeStart.main(Native Method)

Upvotes: 1

Views: 379

Answers (2)

mu is too short
mu is too short

Reputation: 434925

Your columns array has both "title" and "bookmark_title":

String [] columns={"_id","bookmark_url","title","bookmark_title","fk_user_bookmark"};

but you say that bookmark_title is now called title. I'd guess that you've accidentally left something behind in columns and it should be this:

String [] columns={"_id", "bookmark_url", "title", "fk_user_bookmark"};

Upvotes: 0

Kurtis Nusbaum
Kurtis Nusbaum

Reputation: 30845

Have you checked to see what's actually in your database? You can do that by calling adb shell then navigating to the directory where you database is stored, and executing the sqlite3 command. You'll be able to examine the exact contents of your database.

Note that you're database is probably in /data/data/you.package.name on the emulator. For more information on the adb shell command and the sqlite3 command checkout this documentation. It shows you how exactly to get the shell on your device and examine the sqlite database.

Upvotes: 1

Related Questions