2011-08-23 5 views
2

SQLiteOpenHelper (또는 android에서 데이터베이스)를 사용한 첫 번째 시간입니다. 쓰기 가능한 데이터베이스를 얻을 때 왜 클래스의 각 새 인스턴스에서 onCreate가 호출되지 않는지 궁금합니다. 내가 뭔가 잘못하고 있는거야?SQLiteOpenHelper가 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 

} 

} SQLiteOpenHelper에서

+3

응용 프로그램 제거를 시도 했습니까? 이미 데이터베이스를 가지고 있기 때문에'onCreate'를 호출하지 않습니다. –

+0

당신은 완전히 정확했습니다, 나는 그것을 잊어 버리고있었습니다. 단지 내가 추가하려고했던 테이블이 아닌 데이터베이스를 보았습니다. 완벽하게 일했습니다. – JonWells

+0

@NikitaBeloglazov +1이 모든 관련 게시물에 대한 가장 일반적인 오류이기 때문입니다. 이전 프로젝트로 돌아 왔을 때 잊어 버리기 쉽습니다. –

답변

13

'에서 onCreate'의 의미는 그것이 활동에 무엇 다릅니다. 여기서 'onCreate'는 데이터베이스를 처음 만들 때 한 번만 호출됩니다. 다음 번에 앱을 실행하면 데이터베이스가 이미 있으므로 'onCreate'를 호출하지 않습니다. 개체 수준 초기화는 'onCreate'가 아닌 생성자에서 수행해야합니다.

'onCreate'가 호출되는 것을 확인하려면 수동으로 db 파일을 삭제하거나 단순히 응용 프로그램을 제거하십시오.

+2

getWritableDatabase()/readableDatabase()를 호출하면 데이터베이스가 생성되어 기존 데이터베이스를 열거 나 존재하지 않는 데이터베이스를 새로 작성합니다. 따라서 onCreate는 데이터베이스가 캐싱 된 후 한 번만 호출되며 읽기 또는 쓰기 요청에 따라 제공됩니다. – MobileEvangelist

관련 문제