2012-11-09 123 views
-1

我正在做一個android測驗應用程序。有四個答案有一個問題,四個答案中的一個是正確的。當用戶選擇錯誤的答案遊戲結束時,所以我想插入這個問題和數據庫的真正答案,以顯示它在列表視圖中。但對我來說這麼難,請幫我一些代碼。這是我的選擇答案的方法:插入數據到數據庫

private void onOptionSelected(String option){ 

    if(!isGamePaused && !isGameEnded) { 
     ATriviaQuestion tTQuestion = myListOfTriviaQuestions.get(currentQuestionNumber); 
     if(option.equals(tTQuestion.GetOptions().get(tTQuestion.GetAnswer() - 1))) { 
      correct += 1; 
      remainingTime = mySecondsPassed; 
      totalPoints += remainingTime * pointsPerRemainingSecond; 
      totalPoints += pointsPerCorrectAnswer; 
      Toast.makeText(PlayGame.this, "chuan cmnr", Toast.LENGTH_SHORT).show(); 
     } 
     else{questionsAsked = totalQuestions; 
      incorrect += 1; 
      totalPoints -= pointsPerWrongAnswer; 
      Toast.makeText(PlayGame.this,tTQuestion.GetOptions().get(tTQuestion.GetAnswer() - 1), Toast.LENGTH_LONG).show(); 
      isGameEnded=true; 
      EndGame(); 

     } 

     mySecondsPassed = config.GetTimeToAnswer(); 
     UpdateTimerColors(mySecondsPassed); 


     if(questionsAsked >= totalQuestions){ 
      isGameEnded=true; 
      EndGame(); 
      DisplayResults(); 
     } else {      

      currentQuestionNumber=GenerateQuestionNumber(); 
      PopulateQuestion(); 
     } 

    }else{ 
     PausedOrEndedGameResponse(); 
    } 
} 

,這是我database.java

public Quanly_congviec(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 

} 

@Override 
public void onCreate(SQLiteDatabase db) { 

    String SQL_String = "CREATE TABLE " + ten_table + "(" 
      + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," 
      + KEY_NOIDUNG_CONGVIEC + " TEXT," 
      + KEY_THOIGIAN_THUCHIEN + " TEXT, " 
      + KEY_MUCDO_QUANTRONG + " TEXT" + ")"; 
    db.execSQL(SQL_String); 

} 
@Override 
public void onUpgrade(SQLiteDatabase db, int oldversion, int newversion) { 

    db.execSQL("DROP TABLE IF EXISTS " + ten_table); 


    onCreate(db); 
} 


public List<Congviec> getAllCongviec() { 
    List<Congviec> CongviecList = new ArrayList<Congviec>(); 
    String[] ds_dieukien_loc=null; 

    String selectQuery = "SELECT * FROM " + ten_table; 

    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, ds_dieukien_loc); 


    if (cursor.moveToFirst()) { 
     do { 
      Congviec Congviec = new Congviec(); 
      Congviec.set_id(Integer.parseInt(cursor.getString(0))); 
      Congviec.setNoidung_congviec(cursor.getString(1)); 
      Congviec.setThoigian_thuchien(cursor.getString(2)); 
      Congviec.setMucdo_quantrong(cursor.getString(3)); 

      CongviecList.add(Congviec); 
     } while (cursor.moveToNext()); 
    } 
    db.close(); 
    return CongviecList;  

}

public void them_congviec(Congviec congviec) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    String nullColumnHack=null; 
    ContentValues values = new ContentValues(); 
    if (congviec.get_id()!=-1) values.put(KEY_ID,congviec.get_id()); 
    values.put(KEY_NOIDUNG_CONGVIEC, congviec.getNoidung_congviec()); 
    values.put(KEY_THOIGIAN_THUCHIEN, congviec.getThoigian_thuchien()); 
    values.put(KEY_MUCDO_QUANTRONG, congviec.getMucdo_quantrong()); 
    db.insert(ten_table, nullColumnHack, values); 
    db.close();   
} 


public void xoatatca_congviec() { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    String whereClause=""; 
    String[] whereArgs=null; 
    db.delete(ten_table, whereClause, whereArgs);   
    db.close();   
} 

public void xoa_1_congviec(int id){ 
    SQLiteDatabase db= this.getWritableDatabase(); 
    db.execSQL("delete from " + ten_table + " where _id="+id); 
    db.close(); 
} 

public int sua_1_congviec(Congviec congviec) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues values = new ContentValues(); 
    values.put(KEY_NOIDUNG_CONGVIEC, congviec.getNoidung_congviec()); 
    values.put(KEY_THOIGIAN_THUCHIEN, congviec.getThoigian_thuchien()); 
    values.put(KEY_MUCDO_QUANTRONG, congviec.getMucdo_quantrong()); 

    String whereClause=KEY_ID + "=?"; 
    String[] whereArgs={String.valueOf(congviec.get_id())}; 
    return db.update(ten_table, values, whereClause, whereArgs); 
    } 

}

數據庫中的表有三個行,但我想要在第1行中插入問題,第2行和第3行中的真實答案是空白的。

回答

0

最好的數據庫設計是爲每個問題提供一行,而其所有的答案都是。對於有四個答案,其中一個是正確的問題,列名可能是

_ID 問題 CorrectAnswer Incorrect1 Incorrect2 Incorrect3 訂購

(我會使用以設定的順序哪些問題應該出現)。

另一種方法是用一個表來存儲問題,另一個用來存儲每個問題的答案,但第一個選項更容易處理。

最後說明: 如果您的第一語言不是英語,那麼將自己的母語用於變量名和列名是很自然的。唉,大多數開發者使用英語。你的代碼對me的可讀性要低得多,因爲我無法讀取什麼是(我認爲)越南語。這是不公平的,但它是。

+0

對此不便表示抱歉,我的語言是越南語,非常感謝你回答:)。 – TranGia