2016-05-16 6 views
1

Ich entwickle eine Android Learning App und ich habe ein Problem. Ich kann die Fragen in der Datenbank nicht aktualisieren. Es können nur die ersten fünf Fragen aus der Datenbank angezeigt werden. Und das ist mein Datenbankcode, gibt es jemanden, der mir helfen kann? DankHinzufügen von mehr Fragen zur Datenbank für Test-App

package com.example.learningapp.test; 

private static final int DATABASE_VERSION = 1; 
// Database Name 
private static final String DATABASE_NAME = "Test"; 
// tasks table name 
private static final String TABLE_QUEST = "quest"; 
// tasks Table Columns names 
private static final String KEY_ID = "id"; 
private static final String KEY_QUES = "question"; 
private static final String KEY_ANSWER = "answer"; //correct option 
private static final String KEY_ans1= "Ans1"; //option a 
private static final String KEY_ans2= "Ans2"; //option b 
private static final String KEY_ans3= "Ans3"; //option c 
private SQLiteDatabase dbase; 
public DbHelper(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 
@Override 
public void onCreate(SQLiteDatabase db) { 
    dbase=db; 
    String sql = "CREATE TABLE IF NOT EXISTS " + TABLE_QUEST + " (" 
      + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_QUES 
      + " TEXT, " + KEY_ANSWER+ " TEXT, "+KEY_ans1 +" TEXT, " 
      +KEY_ans2 +" TEXT, "+KEY_ans3+" TEXT)"; 
    db.execSQL(sql);   
    addQuestions(); 
    //db.close(); 
} 

private void addQuestions() 
{ 
    Question q1=new Question("Tumbuhan memerlukan cahaya matahari untuk" + 
      " _________________.","Bernafas", "Hidup", "Membuat Makanan", "Membuat Makanan"); 
    this.addQuestion(q1); 
    Question q2=new Question("Manusia memerlukan empat keperluan asas, " + 
      "terdiri daripada", "Udara, Makanan, Cahaya Matahari, Air", "Air, Udara, Makanan, Tempat Perlindungan", 
      "Udara, Tempat Perlindungan, Cahaya Matahari, Air", "Air, Udara, Makanan, Tempat Perlindungan"); 
    this.addQuestion(q2); 
    Question q3=new Question("Sisa-sisa makanan disingkirkan keluar melalui dubur" + 
      " sebagai tinja.Proses ini dinamakan ______________?","Penyahtinjaan", "Perkumuhan","Pernafasan","Penyahtinjaan"); 
    this.addQuestion(q3); 
    Question q4=new Question("Semasa menarik nafas, dada akan _____________ dan _____________." + 
      " Pada masa yang sama, udara masuk ke peparu.", "naik, mengembang", "naik turun, menghempis", "naik, menghempis","naik, mengembang"); 
    this.addQuestion(q4); 
    Question q5=new Question("Berikut adalah cara tumbuhan melindungi diri" + 
      " daripada musuh, KECUALI","Bergetah","Beracun","Daun jejarum","Daun jejarum"); 
    this.addQuestion(q5); 
    Question q6= new Question("Pilihkan jawapan proses kitar hidup" + 
      "rama-rama yang betul.", "telur-> kepompong-> larva->rama-rama dewasa", "telur-> larva-> kepompong-> rama-rama dewasa", 
      "telur-> pupa-> larva -> rama-rama dewasa", "telur-> larva-> kepompong-> rama-rama dewasa"); 
    this.addQuestion(q6); 
    Question q7= new Question("Pilihkan jawapan proses kitar hidup" + 
      "katak yang betul.", "telur-> berudu-> katak muda-> katak dewasa", "telur-> katak muda-> katak dewasa-> kepompong", 
      "telur-> pupa-> katak muda ->katak dewasa", "telur-> berudu-> katak muda-> katak dewasa"); 
    this.addQuestion(q7); 
} 

public void onUpgrade(SQLiteDatabase db, int oldV, int newV) { 
    // Drop older table if existed 
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_QUEST); 
    // Create tables again 
    onCreate(db); 
} 
// Adding new question 
public void addQuestion(Question quest) { 
    //SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues values = new ContentValues(); 
    values.put(KEY_QUES, quest.getQUESTION()); 
    values.put(KEY_ANSWER, quest.getANSWER()); 
    values.put(KEY_ans1, quest.getans1()); 
    values.put(KEY_ans2, quest.getans2()); 
    values.put(KEY_ans3, quest.getans3()); 
    // Inserting Row 
    dbase.insert(TABLE_QUEST, null, values);   
} 
public List<Question> getAllQuestions() { 
    List<Question> quesList = new ArrayList<Question>(); 
    // Select All Query 
    String selectQuery = "SELECT * FROM " + TABLE_QUEST; 
    dbase=this.getReadableDatabase(); 
    Cursor cursor = dbase.rawQuery(selectQuery, null); 
    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
     do { 
      Question quest = new Question(); 
      quest.setID(cursor.getInt(0)); 
      quest.setQUESTION(cursor.getString(1)); 
      quest.setANSWER(cursor.getString(2)); 
      quest.setans1(cursor.getString(3)); 
      quest.setans2(cursor.getString(4)); 
      quest.setans3(cursor.getString(5)); 
      quesList.add(quest); 
     } while (cursor.moveToNext()); 
    } 

    // return quest list 
    return quesList; 
} 

public int rowcount() 
{ 
    int row=0; 
    String selectQuery = "SELECT * FROM " + TABLE_QUEST; 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 
    row=cursor.getCount(); 
    return row; 
} 

}

Antwort

0

Sie fügen Sie Ihre Fragen in onCreate. Es wurde bereits beim ersten Start aufgerufen. Es scheint, als hätten Sie später noch weitere Fragen hinzugefügt. Sie können die Datenbank aktualisieren oder die Anwendung deinstallieren und erneut installieren, um das zweite Mal eine Datenbankerstellung auszulösen. Wie auch immer, es ist keine gute Übung, Ihre Werte in onCreate zu füllen.

+0

hi, Evgeniy ... Danke für den Vorschlag. Aber ich habe versucht, die Datenbankversion von 1 bis 2 zu aktualisieren, aber es scheint nicht funktionieren. Es wird immer noch mit den ersten fünf Fragen aus der Datenbank ausgegeben. – user3688834

+0

einen Screenshot vielleicht veröffentlichen? –

+0

Sie meinen Screenshot für die Ausgabe? wenn die Frage bis zur Frage 5 angezeigt wird. Es kann nicht weiter zur Frage 6 gehen. Wenn ich auf Weiter klicke, wird das Ergebnis der Bewertung angezeigt. – user3688834

Verwandte Themen