Development/Android

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

푸민 2015. 10. 10. 11:00
반응형


안녕하세요 푸민입니다.

안드로이드 내부에는 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);

}


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

반응형