2016-10-18 2 views
1

Как добавить новый столбец или новую таблицу в базу данных, которая предварительно заполнена (в активах) с помощью SQLiteAssetHelper. я первоначально поджать простую таблицу с 3 колонками:Как добавить новый столбец или таблицу в базу данных sqlite, предварительно заполненную в активах, и используя SQLiteAssetHelper

  • Ид
  • вопрос
  • ответ

После установки приложения, мне нужно добавить некоторые столбцы, которые будут заполняться с пользовательскими данными , как отмечен как избранный, видел раньше, отредактировал ... Также мне нужно добавить новую таблицу, в которой записано время учебной сессии и последний вопрос. вот мой код:

import android.content.Context; 
import com.readystatesoftware.sqliteasset.SQLiteAssetHelper; 
public class DatabaseOpenHelper extends SQLiteAssetHelper { 
private static final int DATABASE_VERSION = 1; 
private static final String DATABASE_NAME = "mydatabase.db.sqlite"; 

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

и

public class DatabaseAccess { 
private SQLiteOpenHelper openHelper; 

private SQLiteDatabase database; 
private static DatabaseAccess instance; 

ответ

0

Привет вы можете использовать onUpgrade

public class OpenHelper extends SQLiteOpenHelper { 

    private final static int DB_VERSION = 2; 

    public TracksDB(Context context) { 
     super(context, DB_NAME, null, DB_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     //.... 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     if (oldVersion < 2) { 
      "create table session" 
      " (_id integer primary key autoincrement, " + 
      "date text not null, " + 
      "question text not null);"; 
      db.execSQL(CREATE_TBL); 
     } 
    } 
} 

Вы можете проверить базу данных версии. Если версия базы данных в старой версии приложения запускает создание или изменение запроса запроса.

SQLiteDatabase db = new Helper(context).getWritableDatabase(); 

if(db.getVersion()<2){ 
     "create table session" 
     " (_id integer primary key autoincrement, " + 
     "date text not null, " + 
     "question text not null);"; 
     db.execSQL(CREATE_TBL); 
} 

You must upgrade database version in asset folder. 
+0

Спасибо, Ахмед, но ваше решение работает только с расширением SQLiteOpenHelper и не работает с расширением SQLiteAssetHelper. – AndroPro

Смежные вопросы