SQLite не удалит таблицу - PullRequest
2 голосов
/ 15 января 2020

Здравствуйте, я хочу реализовать простой опрос. Я успешно добавил вопросы с помощью запроса на вставку. Однако вопросы добавляются каждый раз, когда я запускаю приложение.

Я пытался использовать «Drop table, если существует», но ничего не происходит.

public class DatabaseHelper extends SQLiteOpenHelper {

public static final String DBNAME= "Questionpool.db";
public static final String createdb = "Create table  dtaquestions( questionId Integer Primary Key Autoincrement, dtaQuestion Varchar(100), dtaDepartment Varchar(100))";
public static final String dropdb = "Drop table if exists dtaquestions";
Context context;

public DatabaseHelper(Context context) {
    super(context, DBNAME , null, 1);
    this.context = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
      db.execSQL(createdb);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL(dropdb);
}

И в классе Survey у меня есть это,

  myDb = new DatabaseHelper(this);
    SQLiteDatabase DB2=myDb.getWritableDatabase();
    insertQuestions(DB2);
    final Cursor res = getAllData(DB2);


    bViewAll = (Button) findViewById(R.id.bViewAll);

    bViewAll.setOnClickListener(new View.OnClickListener() {
        @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
        @Override
        public void onClick(View v) {

           if(res.getCount()== 0){
               tv.setText("nooo");
           }else{
               int counter = 0;
               while(res.moveToNext()){

                 //show on screen
               }

           }
        }
    });


public void insertQuestions(SQLiteDatabase db){

    String [] dtaQuestions = fillArray();
    String [] dtaQuestionsDep = fillDepartment();
    for (int i = 0 ; i < 18 ; i++ ){
        ContentValues cv = new ContentValues();
        cv.put("dtaQuestion", dtaQuestions[i]);
        cv.put("dtaDepartment", dtaQuestionsDep[i]);
        db.insert("dtaquestions", null, cv);
    }
}

public Cursor getAllData(SQLiteDatabase db){
    Cursor res = db.rawQuery("Select * from dtaquestions", null);
    return  res;
}

У меня нет Идея, почему запрос отбрасывания не работает, и запрос продолжает повторяться.

1 Ответ

1 голос
/ 15 января 2020

Прочитайте документацию: https://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper

onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

Called when the database needs to be upgraded. 

При создании помощника всегда указывается версия 1.

super(context, DBNAME , null, 1);

Вам необходимо изменить версия. Вы можете объявить версию и затем использовать ее:

private static final int VERSION=2;

public DatabaseHelper(Context context) {
    super(context, DBNAME , null,VERSION);
    this.context = context;
}
...