Error pressing a button

0

What I do is change the names to the classes and to the layouts by others, when I execute the aliccion and I give a button I get an error

02-04 18:58:34.219 9795-9795/dev.edmt.flagsquizapp E/AndroidRuntime: FATAL EXCEPTION: main
                                                                 java.lang.RuntimeException: Unable to start activity ComponentInfo{dev.edmt.flagsquizapp/dev.mros.espanyaapp.Done}: android.database.sqlite.SQLiteException: no such column: Infinity (code 1): , while compiling: INSERT INTO Ranking(Puntuacion) VALUES(Infinity)
                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295)
                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)
                                                                     at android.app.ActivityThread.access$700(ActivityThread.java:159)
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
                                                                     at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                     at android.os.Looper.loop(Looper.java:176)
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5419)
                                                                     at java.lang.reflect.Method.invokeNative(Native Method)
                                                                     at java.lang.reflect.Method.invoke(Method.java:525)
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
                                                                     at dalvik.system.NativeStart.main(Native Method)
                                                                  Caused by: android.database.sqlite.SQLiteException: no such column: Infinity (code 1): , while compiling: INSERT INTO Ranking(Puntuacion) VALUES(Infinity)
                                                                     at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
                                                                     at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1118)
                                                                     at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:691)
                                                                     at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
                                                                     at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
                                                                     at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
                                                                     at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1794)
                                                                     at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1725)
                                                                     at dev.mros.espanyaapp.DbHelper.DbHelper.insertScore(DbHelper.java:181)
                                                                     at dev.mros.espanyaapp.Done.onCreate(Done.java:88)
                                                                     at android.app.Activity.performCreate(Activity.java:5372)
                                                                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2257)
                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349) 
                                                                     at android.app.ActivityThread.access$700(ActivityThread.java:159) 
                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316) 
                                                                     at android.os.Handler.dispatchMessage(Handler.java:99) 
                                                                     at android.os.Looper.loop(Looper.java:176) 
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5419) 
                                                                     at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                     at java.lang.reflect.Method.invoke(Method.java:525) 
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 
                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 
                                                                     at dalvik.system.NativeStart.main(Native Method) 

I get an error in the DBhelper I do not know why it never happened to me. This is the helper class (Database)

public class DbHelper extends SQLiteOpenHelper {

private static String DB_NAME = "MyDB.db";
private static String DB_PATH = "";
private SQLiteDatabase mDataBase;
private Context mContext = null;

public DbHelper(Context context) {
    super(context, DB_NAME, null, 1);

    DB_PATH = context.getApplicationInfo().dataDir + "/databases/";
    File file = new File(DB_PATH+"MyDB.db");
    if(file.exists())
        openDataBase();
    this.mContext = context;

}

public void openDataBase() {
    String myPath = DB_PATH + DB_NAME;
    mDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
}

public void copyDataBase() throws IOException {
    try {
        InputStream myInput = mContext.getAssets().open(DB_NAME);
        String outputFileName = DB_PATH + DB_NAME;
        OutputStream myOutput = new FileOutputStream(outputFileName);

        byte[] buffer = new byte[1024];
        int length;
        while ((length = myInput.read(buffer)) > 0)
            myOutput.write(buffer, 0, length);

        myOutput.flush();
        myOutput.close();
        myInput.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

private boolean checkDataBase() {
    SQLiteDatabase tempDB = null;
    try {
        String myPath = DB_PATH + DB_NAME;
        tempDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
    } catch (SQLiteException e) {
        e.printStackTrace();
    }
    if (tempDB != null)
        tempDB.close();
    return tempDB != null ? true : false;
}

public void createDataBase() throws IOException {
    boolean isDBExists = checkDataBase();
    if (isDBExists) {

    } else {
        this.getReadableDatabase();
        try {
            copyDataBase();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}



@Override
public void onCreate(SQLiteDatabase db) {

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

//CRUD For Table
public List<Pregunta> getAllQuestion() {
    List<Pregunta> listQuestion = new ArrayList<>();
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor c;
    try {
        c = db.rawQuery("SELECT * FROM Pregunta ORDER BY Random()", null);
        if (c == null) return null;
        c.moveToFirst();
        do {
            int Id = c.getInt(c.getColumnIndex(mContext.getString(R.string.IDdb)));
            String Image = c.getString(c.getColumnIndex(mContext.getString(R.string.IMAGEdb)));
            String AnswerA = c.getString(c.getColumnIndex(mContext.getString(R.string.ANSWERAdb)));
            String AnswerB = c.getString(c.getColumnIndex(mContext.getString(R.string.ANSWERBdb)));
            String AnswerC = c.getString(c.getColumnIndex(mContext.getString(R.string.ANSWERCdb)));
            String AnswerD = c.getString(c.getColumnIndex(mContext.getString(R.string.ANSWERDdb)));
            String CorrectAnswer = c.getString(c.getColumnIndex(mContext.getString(R.string.CorrectAnswerdb)));

            Pregunta question = new Pregunta(Id, Image, AnswerA, AnswerB, AnswerC, AnswerD, CorrectAnswer);
            listQuestion.add(question);
        }
        while (c.moveToNext());
        c.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

    db.close();
    return listQuestion;
}

//We need improve this function to optimize process from Jugar
public List<Pregunta> getQuestionMode(String mode) {
    List<Pregunta> listQuestion = new ArrayList<>();
    SQLiteDatabase db = this.getWritableDatabase();
    Cursor c;
    int limit = 0;
    if (mode.equals(Comun.MODE.FACIL.toString()))
        limit = 6;
    else if (mode.equals(Comun.MODE.MEDIO.toString()))
        limit = 12;
    else if (mode.equals(Comun.MODE.DIFICIL.toString()))
        limit = 27;
    else if (mode.equals(Comun.MODE.DIFICILISOMO.toString()))
        limit = 50;
    try {
        c = db.rawQuery(String.format("SELECT * FROM Pregunta ORDER BY Random() LIMIT %d", limit), null);
        if (c == null) return null;
        c.moveToFirst();
        do {
            int Id = c.getInt(c.getColumnIndex(mContext.getString(R.string.ID2db)));
            String Image = c.getString(c.getColumnIndex(mContext.getString(R.string.IMAGE2db)));
            String AnswerA = c.getString(c.getColumnIndex(mContext.getString(R.string.ANSWER2db)));
            String AnswerB = c.getString(c.getColumnIndex(mContext.getString(R.string.ANSWERB2db)));
            String AnswerC = c.getString(c.getColumnIndex(mContext.getString(R.string.ANSWERC2db)));
            String AnswerD = c.getString(c.getColumnIndex(mContext.getString(R.string.ANSWERD2db)));
            String CorrectAnswer = c.getString(c.getColumnIndex(mContext.getString(R.string.CorrectAnswer2db)));

            Pregunta question = new Pregunta(Id, Image, AnswerA, AnswerB, AnswerC, AnswerD, CorrectAnswer);
            listQuestion.add(question);
        }
        while (c.moveToNext());
        c.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

    db.close();
    return listQuestion;
}

//Insert Puntuacion to Ranking table
public void insertScore(double score) {
    String query = "INSERT INTO Ranking(Puntuacion) VALUES("+score+")";
    mDataBase.execSQL(query);
}

//Get Puntuacion and sort ranking
public List<Ranking> getRanking() {
    List<Ranking> listRanking = new ArrayList<>();
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor c;
    try {
        c = db.rawQuery("SELECT * FROM Ranking Order By Puntuacion DESC;", null);
        if (c == null) return null;
        c.moveToNext();
        do {
            int Id = c.getInt(c.getColumnIndex(mContext.getString(R.string.ID3db)));
            double Score = c.getDouble(c.getColumnIndex(mContext.getString(R.string.SCOREdb)));

            Ranking ranking = new Ranking(Id, Score);
            listRanking.add(ranking);
        } while (c.moveToNext());
        c.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    db.close();
    return listRanking;

}


//Update version 2.0
public int getPlayCount(int level)
{
    int result = 0;
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor c;
    try{
        c = db.rawQuery("SELECT PlayCount FROM UserPlayCount WHERE Level="+level+";",null);
        if(c == null) return 0;
        c.moveToNext();
        do{
            result  = c.getInt(c.getColumnIndex(mContext.getString(R.string.PLAYCOUNTdb)));
        }while(c.moveToNext());
        c.close();
    }catch (Exception ex)
    {
        ex.printStackTrace();
    }
    return result;
}

public void updatePlayCount(int level,int playCount)
{
    String query = String.format("UPDATE UserPlayCount Set PlayCount = %d WHERE Level = %d",playCount,level);
    mDataBase.execSQL(query);
}

}

    
asked by zzxbx 04.02.2018 в 19:02
source

0 answers