본문 바로가기
Development/Android

[안드로이드] Android SQLite - 1 Helper 클래스

by 푸민 2015. 10. 10.
반응형


안녕하세요 푸민입니다.

안드로이드 내부에는 SQLite 하는 디비가 존재합니다! 일반적인 디비랑 기능이 거의 비슷합니다. 앱의 각종 설정값을 프리퍼런스에 저장한다면 디비에는 좀더 크고 많은 자료를 저장할 수 있습니다.


SQLite 를 사용하기 위해서는 먼저 Helper 클래스를 만들어야 합니다.


public class DBHelper extends SQLiteOpenHelper {

}


이렇게 상속 받으면 onCreate() 와 onUpgrade() 를 오버라이딩할 수 있습니다.

onCreate() 는 데이터베이스가 처음 만들어질때 불리는 메소드이구요,

onUpgrade() 는 데이터베이스의 버전이 바뀔때 마다 불리는 메소드입니다.


private static final String DATABASE_NAME = "userdatabase.db";

private static final int DATABASE_VERSION = 3;


이런식으로 디비 명과 버전을 상수로 정해주고 하면 편합니다.


public DBHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}


생성자에서 이름과 버전을 넘겨줍니다!


public static final String TABLE_NAME = "testdb";

public static final String TABLE_COLUMN_KEY = "test_key";

public static final String TABLE_COLUMN_IMAGE_URI = "test_image_uri";

 

public static final String TABLE_COLUMN_DATA = "test_bitmap_data";

 

@Override

public void onCreate(SQLiteDatabase db) {

String createTableStatement = "CREATE TABLE " + TABLE_NAME + " ("

                      TABLE_COLUMN_KEY + " TEXT NOT NULL, "

                      TABLE_COLUMN_IMAGE_URI + " TEXT NOT NULL, "

                      TABLE_COLUMN_DATA + " BLOB);";

db.execSQL(createTableStatement);

}


onCreate() 에서 만들 디비의 세그먼트를 정하고, execSQL() 메소드로 생성해줍니다.


@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

String dropTableStatement = "DROP TABLE IF EXISTS " + TABLE_NAME;

db.execSQL(dropTableStatement);

onCreate(db);

}


업그레이드를 하는 경우 데이터를 삭제할때는 이렇게 해주면 되구요. 뭐 기존 데이터 활용하려면 업데이트에서 크게 작업 안해주셔도 무방합니다!

반응형

댓글