2016-12-02 4 views
-1

私は、データベースのバージョンを変更するとこれは私のデータベースヘルパークラスの一部のonCreate()メソッドはONUPGRADEでもgetReadableDatabaseを(使用してどちらも呼び出されません)

public class DatabaseHandler extends SQLiteOpenHelper { 
    private static final int DB_VERSION=5; 
    private static final String DB_NAME="Database"; 
    private static final String Task_Table="TaskTable"; 
    public static final String List_Table="ListTable"; 
    private static final String Details_Task="TaskDetails"; 

    private static final String id="_id"; 
    private static final String listname="listname"; 
    private static final String taskname="taskname"; 
    private static final String completed="completed"; 
    private static final String favourite="favourite"; 
    private static final String alarmtime="alarmtime"; 
    private static final String note="note"; 
    private static final String totaltask="totaltask"; 
    private static final String listimage="listimage"; 


    String query; 
    public DatabaseHandler(Context context){ 
     super(context,DB_NAME,null,DB_VERSION); 
     Log.e("super","called"); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     Log.d("database created","dddd"); 
     query="create table "+Task_Table+"("+id+" integer primary key," 
       +listname+" text,"+taskname+" text,"+completed+ 
       " boolean,"+favourite+")"; 
     db.execSQL(query); 
     query="create table "+List_Table+"("+id+" integer primary key," 
       +listname+" text,"+totaltask+" integer" 
       //+listimage+" blob" 
       +")"; 
     db.execSQL(query); 
     query="create table "+Details_Task+"("+id+" integer primary key," 
       +listname+" text,"+taskname+" text,"+alarmtime+ 
       " text,"+note+" text"+")"; 
     db.execSQL(query); 


    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     Log.e("upgrade","called"); 
      db.execSQL("drop table if exists "+Task_Table); 
     db.execSQL("drop table if exists "+List_Table); 
     db.execSQL("drop table if exists "+Details_Task); 
     Log.e("calling","oncreate"); 
     onCreate(db); 
     Log.e("back","again"); 
    } 
} 

あるONUPGRADE()の呼び出し、呼び出されましたその中のOncreate()は機能しません。 私はgetReadableDatabase()とgetWritabledatabase()を使用しようとしましたが、動作しません。 アプリケーションをアンインストールしてデータを消去しようとしましたが、何も動作していません。 助けてください

+2

http://stackoverflow.com/questions/21881992/when-is-sqliteopenhelper-oncreate-onupgrade-run – laalto

答えて

1

sqlite onCreateでは、データベースヘルパークラスのインスタンスを初めて作成するときに一度だけ呼び出します。新しいバージョンが古いバージョンの場合はonUpgradeメソッド呼び出し、古いバージョンの場合は(newVersion> oldVersion);

1

データベースがすでに作成されている場合は、onCreate()を呼び出すことはできません。詳細については、この答えを確認してください:stackoverflow link

0

初めてエミュレータやアンドロイドモバイルでアンドロイドアプリを起動すると、DBが作成され、onCreate()メソッドが呼び出されます。

DB_VERSIONを変更してより古いバージョンのものに変更すると、onUpgrade()メソッドが呼び出されます。

アンドロイドアプリをテストしていて、インストールするたびにonCreate()メソッドを呼び出す場合は、エミュレータまたはアンドロイドモバイルからアンインストールする必要があります。アンインストールすると、アンドロイドアプリのインストールはonCreate()メソッドを呼び出します。

ただし、アプリケーションをアンインストールした場合、DB_VERSIONが古いバージョンより大きい場合は問題ありません。onCreate()のみを呼び出します。

関連する問題