헬퍼 클래스
헬퍼 클래스는 데이터베이스 버전을 지정하여 데이터베이스를 업그레이드할 때 알 수 있도록 합니다.
그리고 현재 단말에 설치된 앱의 테이블이 새로 만들어지는지 아니면 업그레이드되어야 하는지를 알려줍니다.
헬퍼 클래스는 SQLiteOpenHelper라는 것을 이용해 만듭니다.
public SQLiteOpenHelper (Context context, String name,
SQLiteDatabase.CursorFactory factory, int version)
이 클래스 안에는 세 개의 메소드가 있는데 데이터베이스의 상태에서 따라 자동으로 호출됩니다.
즉, 새로 데이터베이스가 만들어지는 경우에는 onCreate 메소드가 호출되며 업그레이드가 필요한 경우에는 onUpgrade 메소드가 호출됩니다.
public abstract void onCreate (SQLiteDatabase db)
public abstract void onOpen (SQLiteDatabase db)
public abstract void onUpgrade (SQLiteDatabase db, int oldVersion, int newVersion)
헬퍼 클래스를 이용하는 전형적인 구조는 다음과 같습니다.
헬퍼 클래스 상속하여 정의하기
SQLiteOpenHelper 클래스를 상속하여 새로운 클래스를 정의하면 데이터베이스를 관리하는 코드를 하나의 클래스 안에서 처리 할 수 있습니다.
private class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
onCreate 메소드는 데이터베이스가 처음 만들어지는 경우에 호출되므로 데이터베이스를 초기화(생성) 하는 SQL을 넣어줍니다.
public void onCreate(SQLiteDatabase db) {
println(“creating table [“ + TABLE_NAME + “].“);
String CREATE_SQL = “create table “ + TABLE_NAME + “(“
+ “ _id integer PRIMARY KEY autoincrement, “
+ “ name text, “
+ “ age integer, “
+ “ phone text)“;
try {
db.execSQL(CREATE_SQL);
} catch(Exception ex) {
Log.e(TAG, “Exception in CREATE_SQL“, ex);
}
onUpgrade 메소드는 테이블이 변경되어야 하는 등 단말에 저장된 데이터베이스의 구조가 바뀌어야 하는 경우에 사용할 수 있습니다.
이 안에는 테이블을 변경하기 위한 ALTER 문 등을 넣을 수 있으며 필요한 경우에는 이미 저장되어 있는 데이터를 다른 곳에 복사했다가 새로 테이블을 만들고 그 테이블에 넣어주는 방식으로 처리하기도 합니다.
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, “Upgrading database from version “ + oldVersion +
“ to “ + newVersion + “.“);
if (newVersion > 1) {
db.execSQL(“DROP TABLE IF EXISTS “ + TABLE_NAME);
}
최근댓글