SQLite logic error

Ik krijg de volgende foutmelding wanneer ik een zoekopdracht probeer uit te voeren via QSB. Ik heb een database gemaakt met vereiste kolommen voor QSB.

11-30 20:12:49.805: E/DatabaseUtils(2116): android.database.sqlite.SQLiteException: SQL logic error or missing database
11-30 20:12:49.805: E/DatabaseUtils(2116):  at android.database.sqlite.SQLiteQuery.native_fill_window(Native Method)
11-30 20:12:49.805: E/DatabaseUtils(2116):  at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:75)
11-30 20:12:49.805: E/DatabaseUtils(2116):  at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:288)
11-30 20:12:49.805: E/DatabaseUtils(2116):  at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:269)
11-30 20:12:49.805: E/DatabaseUtils(2116):  at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:171)
11-30 20:12:49.805: E/DatabaseUtils(2116):  at android.database.AbstractCursor.moveToFirst(AbstractCursor.java:248)
11-30 20:12:49.805: E/DatabaseUtils(2116):  at com.simple.search.DatabaseHelper.query(DatabaseHelper.java:65)
11-30 20:12:49.805: E/DatabaseUtils(2116):  at com.simple.search.DatabaseHelper.getRecordMatches(DatabaseHelper.java:76)

DatabaseHelper.query

private Cursor query(String selection, String[] selectionArgs,
        String[] columns) {
    SQLiteDatabase mDb = getReadableDatabase();
    SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
    builder.setTables(DATABASE_TABLE);

    Cursor cursor = builder.query(mDb, columns,
            selection, selectionArgs, null, null, null);
    if (cursor == null) {
        return null;
    } else if (!cursor.moveToFirst()) {
        cursor.close();
        return null;
    }
    return cursor;
}
public Cursor getRecordMatches(String query, String[] columns) {
    String selection = SearchManager.SUGGEST_COLUMN_TEXT_1 + " MATCH ?";
    String[] selectionArgs = new String[] {query+"*"};

    return query(selection, selectionArgs, columns);
}

public Cursor getRecord(String rowId, String[] columns) {
    String selection = "rowid = ?";
    String[] selectionArgs = new String[] {rowId};

    return query(selection, selectionArgs, columns);
}

bewerken: toegevoegde getrecordmatches toegevoegd, getrecord toegevoegd

1
kun je de waarden van de parameters (selectie, de selectieArgs en kolommen) geven die je die uitzondering geven
toegevoegd de auteur pdiddy, de bron
bedankt voor de code, maar kunt u de exacte waarden opgeven voor Selection, SelectionArgs en kolommen die die fout geeft. Ik denk niet echt dat er iets mis is met de code, daarom vraag ik ... misschien is het misschien nuttiger om de waarden van die parameters te zien
toegevoegd de auteur pdiddy, de bron
@pdiddy Bedankt voor de antwoordpartner. De gevraagde code toegevoegd.
toegevoegd de auteur Binoy Babu, de bron
@pdiddy Sorry voor te laat antwoord. Internet probleem. selectie: suggest_text_1 MATCH?, selectionArgs [0]: *, columns []: {BaseColumns._ID, SearchManager.SUGGEST_COLUMN_TEXT_1}
toegevoegd de auteur Binoy Babu, de bron

1 antwoord

Ik heb het opgelost met behulp van een volledig andere cursor. Het is primitief maar het werkt.

private Cursor query(String selection, String[] selectionArgs,
        String[] columns) {
    Log.d(Tag.getTag(this),
            ("selection : " + selection + ", selectionArgs[0] :"
                    + selectionArgs[0] + ", columns :" + columns));
    SQLiteDatabase mDb = getReadableDatabase();
    String query = selectionArgs[0];
    Cursor cursor = mDb
            .rawQuery(
                    "SELECT " + columns[0] +", "+ columns[1] + " FROM " + DATABASE_TABLE + " WHERE " + columns[1] + " LIKE ?",
                    new String[] { "%" + query  + "%" });
     if (cursor == null) {
     return null;
     } else if (!cursor.moveToFirst()) {
     cursor.close();
     return null;
     }
     return cursor;

}
0
toegevoegd