2011-12-06 78 views
1

當通過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

回答

0

我解決它通過使用一個完全不同勢光標。這是原始的,但它的工作。

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; 

}