mardi 3 mai 2016

Android can not insert into sqite and retrieve

I'm trying to make a quiz game. But I can not write questions into Database. getAllQuestions method in DBHelper does not work properly and I even don't know why. Here is my DBHelper and Quiz Activity classes, if you can help me I'll be grateful.

DBHelper :

    import java.util.ArrayList;
    import java.util.List;
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.sqlite.*;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;
    import android.database.sqlite.SQLiteOpenHelper;

    public class DBHelper extends SQLiteOpenHelper{

    private static final int DATABASE_VERSION = 1;
    // Database Name
    private static final String DATABASE_NAME = "guessArtist";
    // 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_IMG = "image";
    private static final String KEY_QUES = "question";
    private static final String KEY_ANSWER = "answer"; //correct option
    private static final String KEY_OPTA= "opta"; //option a
    private static final String KEY_OPTB= "optb"; //option b
    private static final String KEY_OPTC= "optc"; //option c
    private static final String KEY_OPTD= "optd"; //option c

    public DBHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }
    @Override
    public void onCreate(SQLiteDatabase db) {

            String sql = "CREATE TABLE IF NOT EXISTS " + TABLE_QUEST +
            " ( " + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
                    +KEY_IMG  + "TEXT,"
                    +KEY_QUES + " TEXT, "
                    +KEY_ANSWER+ " TEXT, "
                    +KEY_OPTA +" TEXT, "
                    +KEY_OPTB +" TEXT, "
                    +KEY_OPTC+" TEXT, "
                    +KEY_OPTD + "TEXT)";
        db.execSQL(sql);
    //db.close();
        }
    public void addQuestions()
        {
        Question q1= new Question("manet_launcheon_on_the_grass","Who made this work?", "Edouard Manet", "Claude Monet", "Rembrant", "Edouard Manet","Francisco Goya");
        this.addQuestion(q1);

        Question q2= new Question("monet_impression_sunrise","Who made this work?", "Claude Monet", "Claude Monet", "Vincent Van Gogh ", "Gustave Courbet","Gustave Caillebotte");
        this.addQuestion(q2);

        }
    @Override
    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_IMG, quest.getImage());
        values.put(KEY_QUES, quest.getQuestion());
        values.put(KEY_ANSWER, quest.getAnswer());
        values.put(KEY_OPTA, quest.getCaseA());
        values.put(KEY_OPTB, quest.getCaseB());
        values.put(KEY_OPTC, quest.getCaseC());
        values.put(KEY_OPTD, quest.getCaseD());
    // Inserting Row
        db.insert(TABLE_QUEST, null, values);
        db.close();
        }
    public List<Question> getAllQuestions() {
        List<Question> quesList = new ArrayList<Question>();
    // Select All Query
        SQLiteDatabase db = this.getReadableDatabase();
        String selectQuery = "SELECT  * FROM " + TABLE_QUEST;
        Cursor cursor = db.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.setImage(cursor.getString(1));
        quest.setQuestion(cursor.getString(2));
        quest.setAnswer(cursor.getString(3));
        quest.setCaseA(cursor.getString(4));
        quest.setCaseB(cursor.getString(5));
        quest.setCaseC(cursor.getString(6));
        quest.setCaseD(cursor.getString(7));
        quesList.add(quest);
        } while (cursor.moveToNext());
        }
    // return quest list
        return quesList;
        }
    public int questionCount()
        {
        int row=0;
        String selectQuery = "SELECT  * FROM " + TABLE_QUEST;
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);
        row=cursor.getCount();
        cursor.close();
        return row;
        }
        }

QuizActivity:

import android.app.Activity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.TextView;

import java.util.List;

import static guesstheartist.fkaya.com.guesstheartist.R.raw.manet_launcheon_on_the_grass;


public class QuizActivity extends Activity {

        List<Question> questionList;
        int score = 0;
        int id = 0;
        Question question;
        RadioButton A, B, C, D;
        TextView quesInfo;
        Button next;
        ImageView queImage;
        String imgName;
        private DBHelper database;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.quiz_activity);

        database = new DBHelper(this);
        database.addQuestions();
        questionList = database.getAllQuestions();
        question = questionList.get(id);
        queImage = (ImageView) findViewById(R.id.queImg);
        quesInfo = (TextView) findViewById(R.id.queView);
        A = (RadioButton) findViewById(R.id.ABtn);
        B = (RadioButton) findViewById(R.id.BBtn);
        C = (RadioButton) findViewById(R.id.CBtn);
        D = (RadioButton) findViewById(R.id.DBtn);
        next = (Button) findViewById(R.id.nextBtn);
        setQuestionView();

        next.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
    }

    private void setQuestionView()
    {
        imgName = question.getImage();
        if(imgName == "manet_launcheon_on_the_grass"){
         queImage.setImageResource(R.raw.manet_launcheon_on_the_grass);
         quesInfo.setText(question.getQuestion());
         A.setText(question.getCaseA());
         B.setText(question.getCaseB());
         C.setText(question.getCaseC());
         D.setText(question.getCaseD());}

        else if(imgName == "monet_impression_sunrise") {
            queImage.setImageResource(R.raw.monet_impression_sunrise);
            quesInfo.setText(question.getQuestion());
            A.setText(question.getCaseA());
            B.setText(question.getCaseB());
            C.setText(question.getCaseC());
            D.setText(question.getCaseD());}
        id++;
    }
}

Aucun commentaire:

Enregistrer un commentaire