2017-05-05 48 views
-1

在我的數據庫幫助程序中,我有一個函數來返回表中的所有記錄。 該表已正確填充。 當我運行該應用程序時,它不返回任何數據。 在調試模式下,在查詢後停止1行,遊標爲空,如果我打開評估表達式窗口並運行查詢函數,它仍然返回沒有數據,但是如果我在評估表達式窗口中調用函數,它會正確返回數據...返回遊標時Android Sql怪異行爲

我錯過了什麼嗎?

public Cursor fetchDebCreByType(String type) { 
    SQLiteDatabase db = this.getReadableDatabase(); 
    String query = "SELECT * FROM " + TABLE_NAME; 
    Cursor mCursor = db.rawQuery(query, null); 
    if (mCursor != null) { 
     mCursor.moveToFirst(); 
    } 
    return mCursor; 
} 

對不起,現在這工作,我不知道爲什麼,順便說一句感謝

回答

0

我想是因爲你移動到第一行,但你以後什麼也不做。我不知道你用光標下一步要做什麼,所以我建議你做這樣的事情

public ArrayList<String> fetchDebCreByType(String type) { 
    SQLiteDatabase db = this.getReadableDatabase(); 
    String query = "SELECT * FROM " + TABLE_NAME; 
    Cursor cursor = db.rawQuery(query, null); 
    ArrayList<String> temp = new ArrayList<>(); // or any other type 
    cursor.moveToFirst(); 
    while (!cursor.isAfterLast()) { 
     temp.add(cursor.getString(cur.getColumnIndex("somename"))); 
     cursor.moveToNext(); 
    } 
    cursor.close(); 
    return temp; 
} 
+0

我返回遊標的一個CursorAdapter, – Roberto

+0

嘗試刪除'如果(mCursor!= NULL){ mCursor.moveToFirst(); }'部分,看看它是否有效。 – Denny