0

アプリ用の SD カードに SQlite テーブルがあります。ここで、データベースをアップグレードする必要があります。しかし、onUpgrade の後、SQLiteOpenHelper の onCreate が呼び出されることはありません。

これが私のコードです:

public class DatabaseHandler extends SQLiteOpenHelper {

private static final String DATABASE_NAME = Environment
        .getExternalStorageDirectory().getAbsolutePath()
        + "/"
        + Environment.DIRECTORY_DOWNLOADS + "/MyApp.sqlite";

public void onCreate(SQLiteDatabase db) {
    Log.e(TAG, "DB onCreate");
    // String CREATE_SCHEMA =
    db.execSQL("CREATE TABLE Master ("
            + "  ID integer PRIMARY KEY NOT NULL ,"
            + "  UserName varchar(50) NOT NULL ,"
            + "  DriverID int NOT NULL ,"
            + "  DriverName varchar(100) NULL ,"
            + "  MobilePrint int NOT NULL DEFAULT 0 ,"
            + "  LastSyncUTC text NULL ,"
            + "  SchemaVersion TEXT NOT NULL ,"
            + "  PasswordHash TEXT NULL ," + "  SyncMinutes int NOT NULL ,"
            + "  LatestAppVersion TEXT NOT NULL" + ");");

    @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO: handle updates when they are necessary
    Log.e(TAG, "DB onUpgrade");
    db.execSQL("DROP TABLE IF EXISTS " + "Master");
}

理由がわかりません。新しいバージョンにアップグレードしていません。

4

1 に答える 1

1

onUpgrade では、データベースを再作成するすべての作業を行う必要があります。onCreate() は onUpgrade 後に呼び出されません。

于 2013-10-07T21:22:29.570 に答える