2

これは、私がSQLiteOpenHelper(またはAndroid上のデータベース)を使用した最初の時間です。書き込み可能なデータベースを取得したとき、クラスの新しいインスタンスごとにonCreateが呼び出されないのはなぜかと思っていました。私は何か間違ったことをしていますか?

public class DatabaseHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "MyDatabase.db";
    private static final int DATABASE_VERSION = 1;
    private String PrSQLcmd = "";


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


@Override
public void onCreate(SQLiteDatabase db) 
{
    db.execSQL("CREATE TABLE IF NOT EXISTS Contact(Firstname TEXT, LastName TEXT");
}


@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub

}

}

4

1 に答える 1

14

SQLiteOpenHelperでは、「onCreate」の意味はアクティビティの意味とは異なります。ここで、「onCreate」は1回だけ呼び出されます。これは、データベースを作成するのは初めてです。次回アプリを実行するとき、データベースはすでに存在しているため、「onCreate」は呼び出されません。オブジェクトレベルの初期化は、'onCreate'ではなくコンストラクターで行う必要があります

'onCreate'が呼び出されていることを確認するには、dbファイルを手動で削除するか、アプリをアンインストールします。

于 2011-08-23T16:43:36.320 に答える