Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java android.database.sqlite.SQLiteException:没有这样的列:favorite1(代码1)_Java_Android_Sqlite - Fatal编程技术网

Java android.database.sqlite.SQLiteException:没有这样的列:favorite1(代码1)

Java android.database.sqlite.SQLiteException:没有这样的列:favorite1(代码1),java,android,sqlite,Java,Android,Sqlite,当我调试我的应用程序时出现了一个错误,我真的找不到我做错了什么,我真的不知道为什么收藏夹后面有一个1,希望有人能给我一个提示,谢谢。 日志: 02-13 07:42:49.070 1331-1331/me.knoxc.fdemo E/SQLiteLog﹕ 1没有此类列:favorite1 02-13 07:42:49.082 1331-1331/me.knoxc.fdemo E/AndroidRuntime﹕ 致命异常:主 android.database.sqlite.SQLiteExcept

当我调试我的应用程序时出现了一个错误,我真的找不到我做错了什么,我真的不知道为什么收藏夹后面有一个1,希望有人能给我一个提示,谢谢。 日志:

02-13 07:42:49.070 1331-1331/me.knoxc.fdemo E/SQLiteLog﹕ 1没有此类列:favorite1 02-13 07:42:49.082 1331-1331/me.knoxc.fdemo E/AndroidRuntime﹕ 致命异常:主 android.database.sqlite.SQLiteException:没有这样的列:favorite1代码1:,编译时:选择从isread为NULL的条目中选择计数,从favorite1从条目中选择计数,从条目中选择favorite1作为已加入的\u提要\u id,名称,url,图标,从提要中选择groupid作为f ON entries.feedid=f.joined\u提要\u id 在android.database.sqlite.SQLiteConnection.nativePrepareStatementNative方法中 位于android.database.sqlite.SQLiteConnection.acquirePreparedStatementSQLiteConnection.java:889 在android.database.sqlite.SQLiteConnection.prepareSQLiteConnection.java:500 位于android.database.sqlite.SQLiteSession.prepareSQLiteSession.java:588 在android.database.sqlite.SQLiteProgram.SQLiteProgram.java:58 位于android.database.sqlite.SQLiteQuery.SQLiteQuery.java:37 位于android.database.sqlite.SQLiteDirectCursorDriver.querySQLiteDirectCursorDriver.java:44 位于android.database.sqlite.SQLiteDatabase.rawQueryWithFactorySQLiteDatabase.java:1314 位于android.database.sqlite.SQLiteQueryBuilder.querySQLiteQueryBuilder.java:400 位于android.database.sqlite.SQLiteQueryBuilder.querySQLiteQueryBuilder.java:294 在me.knoxc.fdemo.provider.FeedDataContentProvider.queryFeedDataContentProvider.java:269 位于android.content.ContentProvider.queryContentProvider.java:744 在android.content.ContentProvider$Transport.queryContentProvider.java:199 在android.content.ContentResolver.queryContentResolver.java:414 在android.content.ContentResolver.queryContentResolver.java:357 at me.knoxc.fdemo.adapter.drauredapter.updateNumberDrawerapter.java:208 java:60 at me.knoxc.fdemo.activity.MainActivity.onLoadFinishedMainActivity.java:331 at me.knoxc.fdemo.activity.MainActivity.onLoadFinishedMainActivity.java:39 位于android.app.LoaderManagerImpl$LoaderInfo.callOnLoadFinishedLoaderManager.java:483 位于android.app.LoaderManagerImpl$LoaderInfo.onLoadCompleteLoaderManager.java:451 在android.content.Loader.deliverResultLoader.java:144 在android.content.CursorLoader.deliverResultCursorLoader.java:110 在android.content.CursorLoader.deliverResultCursorLoader.java:43 在android.content.AsyncTaskLoader.DispatchOnLoadCompleteTasyncTaskLoader.java:256 在android.content.AsyncTaskLoader$LoadTask.onPostExecuteAsyncTaskLoader.java:91 位于android.os.AsyncTask.finishAsyncTask.java:631 在android.os.AsyncTask.access$600AsyncTask.java:177 在android.os.AsyncTask$InternalHandler.handleMessageAsyncTask.java:644 在android.os.Handler.dispatchMessageHandler.java:99 在android.os.Looper.Looper.java:137 位于android.app.ActivityThread.mainActivityThread.java:5103 在java.lang.reflect.Method.invokenactive方法中 位于java.lang.reflect.Method.invokeMethod.java:525 位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.runZygoteInit.java:737 位于com.android.internal.os.ZygoteInit.mainZygoteInit.java:553 在dalvik.system.NativeStart.mainNative方法

FeedDataContentProvider.java的关键代码

public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
    SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();

    int matchCode = URI_MATCHER.match(uri);

    if ((matchCode == URI_FEEDS || matchCode == URI_GROUPS || matchCode == URI_FEEDS_FOR_GROUPS) && sortOrder == null) {
        sortOrder = FeedData.FeedColumns.PRIORITY;
    }

    switch (matchCode) {
        case URI_GROUPED_FEEDS: {
            queryBuilder.setTables(FeedData.FEEDS_TABLE_WITH_GROUP_PRIORITY);
            sortOrder = "IFNULL(group_priority, " + FeedData.FeedColumns.PRIORITY + "), IFNULL(" + FeedData.FeedColumns.GROUP_ID + ", " + FeedData.FeedColumns._ID + "), " + FeedData.FeedColumns.IS_GROUP + " DESC, " + FeedData.FeedColumns.PRIORITY;
            break;
        }
        case URI_GROUPS: {
            queryBuilder.setTables(FeedData.FeedColumns.TABLE_NAME);
            queryBuilder.appendWhere(new StringBuilder(FeedData.FeedColumns.IS_GROUP).append(Constants.DB_IS_TRUE).append(Constants.DB_OR)
                    .append(FeedData.FeedColumns.GROUP_ID).append(Constants.DB_IS_NULL));
            break;
        }
        case URI_FEEDS_FOR_GROUPS: {
            queryBuilder.setTables(FeedData.FeedColumns.TABLE_NAME);
            queryBuilder.appendWhere(new StringBuilder(FeedData.FeedColumns.GROUP_ID).append('=').append(uri.getPathSegments().get(1)));
            break;
        }
        case URI_GROUP:
        case URI_FEED: {
            queryBuilder.setTables(FeedData.FeedColumns.TABLE_NAME);
            queryBuilder.appendWhere(new StringBuilder(FeedData.FeedColumns._ID).append('=').append(uri.getPathSegments().get(1)));
            break;
        }
        case URI_FEEDS: {
            queryBuilder.setTables(FeedData.FeedColumns.TABLE_NAME);
            queryBuilder.appendWhere(new StringBuilder(FeedData.FeedColumns.IS_GROUP).append(Constants.DB_IS_NULL));
            break;
        }
        case URI_FILTERS: {
            queryBuilder.setTables(FeedData.FilterColumns.TABLE_NAME);
            break;
        }
        case URI_FILTERS_FOR_FEED: {
            queryBuilder.setTables(FeedData.FilterColumns.TABLE_NAME);
            queryBuilder.appendWhere(new StringBuilder(FeedData.FilterColumns.FEED_ID).append('=').append(uri.getPathSegments().get(1)));
            break;
        }
        case URI_ENTRY_FOR_FEED:
        case URI_ENTRY_FOR_GROUP:
        case URI_SEARCH_ENTRY: {
            queryBuilder.setTables(FeedData.ENTRIES_TABLE_WITH_FEED_INFO);
            queryBuilder.appendWhere(new StringBuilder(FeedData.EntryColumns._ID).append('=').append(uri.getPathSegments().get(3)));
            break;
        }
        case URI_ENTRIES_FOR_FEED: {
            queryBuilder.setTables(FeedData.ENTRIES_TABLE_WITH_FEED_INFO);
            queryBuilder.appendWhere(new StringBuilder(FeedData.EntryColumns.FEED_ID).append('=').append(uri.getPathSegments().get(1)));
            break;
        }
        case URI_ENTRIES_FOR_GROUP: {
            queryBuilder.setTables(FeedData.ENTRIES_TABLE_WITH_FEED_INFO);
            queryBuilder.appendWhere(new StringBuilder(FeedData.FeedColumns.GROUP_ID).append('=').append(uri.getPathSegments().get(1)));
            break;
        }
        case URI_ALL_ENTRIES:
        case URI_ENTRIES: {
            queryBuilder.setTables(FeedData.ENTRIES_TABLE_WITH_FEED_INFO);
            break;
        }
        case URI_SEARCH: {
            queryBuilder.setTables(FeedData.ENTRIES_TABLE_WITH_FEED_INFO);
            queryBuilder.appendWhere(getSearchWhereClause(uri.getPathSegments().get(2)));
            break;
        }
        case URI_FAVORITES_ENTRY:
        case URI_ALL_ENTRIES_ENTRY:
        case URI_ENTRY: {
            queryBuilder.setTables(FeedData.ENTRIES_TABLE_WITH_FEED_INFO);
            queryBuilder.appendWhere(new StringBuilder(FeedData.EntryColumns._ID).append('=').append(uri.getPathSegments().get(1)));
            break;
        }
        case URI_FAVORITES: {
            queryBuilder.setTables(FeedData.ENTRIES_TABLE_WITH_FEED_INFO);
            queryBuilder.appendWhere(new StringBuilder(FeedData.EntryColumns.IS_FAVORITE).append(Constants.DB_IS_TRUE));
            break;
        }
        case URI_TASKS: {
            queryBuilder.setTables(FeedData.TaskColumns.TABLE_NAME);
            break;
        }
        case URI_TASK: {
            queryBuilder.setTables(FeedData.TaskColumns.TABLE_NAME);
            queryBuilder.appendWhere(new StringBuilder(FeedData.EntryColumns._ID).append('=').append(uri.getPathSegments().get(1)));
            break;
        }
        default:
            throw new IllegalArgumentException("Illegal query. Match code=" + matchCode + "; uri=" + uri);
    }

    SQLiteDatabase database = mDatabaseHelper.getReadableDatabase();

    Cursor cursor = queryBuilder.query(database, projection, selection, selectionArgs, null, null, sortOrder);

    cursor.setNotificationUri(getContext().getContentResolver(), uri);
    return cursor;
}<br>

也许这就是罪魁祸首:

case URI_FAVORITES: {
         // .....
         queryBuilder.appendWhere(new StringBuilder(FeedData.EntryColumns.IS_FAVORITE).append(Constants.DB_IS_TRUE));
         break;
}
Constants.DB_等于什么


无论它是否相等,在本例中,我假设它被附加到最喜爱的列名,并产生favorite1。

行中的是FeedDataContentProvider.java中的269?Cursor Cursor=queryBuilder.querydatabase、projection、selection、selectionArgs、null、null、sortOrder;为什么要将此附加到IS_FAVORITE:appendConstants.DB_IS_TRUE?我想检查entries表中的IS_FAVORITE列是否为null,这必须在第一次打开应用程序时完成。是的,你是对的,DB_IS_TRUE=1,但为什么它会变成错误的句子,或者有另一种方法让IS_FAVORITE等于TRUE,FeedData.EntryColumns.IS_FAVORITE.equalsConstants.DB_是真的吗?我已经像你说的那样添加了单词,但是错误仍然存在,我还添加了.append=到我需要使用DB_的地方是真的。
case URI_FAVORITES: {
     // .....
     queryBuilder.appendWhere(new StringBuilder(FeedData.EntryColumns.IS_FAVORITE)

.append("=") //add this line

.append(Constants.DB_IS_TRUE));
     break;
}
case URI_FAVORITES: {
     // .....
     queryBuilder.appendWhere(new StringBuilder(FeedData.EntryColumns.IS_FAVORITE)

.append("=") //add this line

.append(Constants.DB_IS_TRUE));
     break;
}