SQLite逻辑错误

SQLite逻辑错误

问题描述:

当通过QSB执行查询时,出现以下错误。我已经为QSB创建了具有所需列的数据库。SQLite逻辑错误

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); 
} 

编辑:添加getrecordmatches,加入getrecord

+0

你可以给它给你的答复队友是例外 – pdiddy

+0

@pdiddy感谢参数(选择,selectionArgs两个,和列)的值。添加了请求的代码。 –

+0

感谢您的代码,但是您能否给出Selection,SelectionArgs和列出的错误的确切值。我真的没有任何错误的代码,这就是为什么我问....也许看到这些参数的值将更有帮助 – pdiddy

我解决它通过使用一个完全不同势光标。这是原始的,但它的工作。

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; 

}