2013-07-16 71 views
0

我按照這個教程http://www.sarahghaffary.com/android-quotes-generator-sample-application-using-alarmmanager-and-sqlite-database/,但我想知道如何使它即使用完引號也不斷重複引號。我知道我需要更改下面的代碼,但不知道如何。只有初學者,任何幫助都會很棒!重複相同的活動

代碼:

public String getRandomQuote(){ 
SQLiteDatabase db = this.getWritableDatabase(); 
String selectQuery = "SELECT * FROM " + QUOTES_TABLE_NAME + " WHERE " + KEY_ISREAD + " = 0 ORDER BY RANDOM() LIMIT 1"; 
Cursor cursor = db.rawQuery(selectQuery, null); 

if (cursor != null) 
    if(cursor.moveToFirst()){ 
     db.execSQL("update " + QUOTES_TABLE_NAME + " set " + KEY_ISREAD + " = 1 where "+ KEY_ID +" = "+ cursor.getString(0)); 
     return cursor.getString(1); 
    } 
return "Sorry, you ran out of quotes <img src="http://www.sarahghaffary.com/wp-includes/images/smilies/icon_biggrin.gif" alt=":D" class="wp-smiley"> "; 
} 
+0

簡單的解決方案是再次把KEY_ISREAD回0。 – njzk2

+0

我該怎麼做? – user2407147

+0

就像你把它放到1一樣,只是沒有where子句。 – njzk2

回答

2
public String getRandomQuote(){ 
SQLiteDatabase db = this.getWritableDatabase(); 
String selectQuery = "SELECT * FROM " + QUOTES_TABLE_NAME + " WHERE " + KEY_ISREAD + " = 0 ORDER BY RANDOM() LIMIT 1"; 
String UpdateAllQuery= "Update "+ QUOTES_TABLE_NAME + " set " + KEY_ISREAD + " = 0"; 
Cursor cursor = db.rawQuery(selectQuery, null); 
String quote = ""; 

if (cursor != null){ 
     cursor.moveToFirst(); 
     if (cursor.getCount() < 1){ 
      db.execSQL(UpdateAllQuery); 
      cursor = db.rawQuery(selectQuery, null); 
      cursor.moveToFirst(); 
     } 
     db.execSQL("update " + QUOTES_TABLE_NAME + " set " + KEY_ISREAD + " = 1 where "+ KEY_ID +" = "+ cursor.getString(0)); 
     quote = cursor.getString(1); 
     return quote; 
}else{ 
    return "Sorry, you ran out of quotes <img src="http://www.sarahghaffary.com/wp-includes/images/smilies/icon_biggrin.gif" alt=":D" class="wp-smiley"> "; 
} 
+0

只顯示「對不起,你用完了報價單」。感謝您的嘗試:) – user2407147

+0

用正確的代碼再試一次。如果它直接進入「Sorry」部分,那麼你有一個空遊標。 – ObieMD5

+0

這在getRandomQuote上會出錯,它說要添加我做過的return語句,現在只是在應用程序中沒有顯示任何內容:S。非常感謝您再次嘗試:D – user2407147