안녕하세요 푸민입니다.
안드로이드 내부에는 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);
}
업그레이드를 하는 경우 데이터를 삭제할때는 이렇게 해주면 되구요. 뭐 기존 데이터 활용하려면 업데이트에서 크게 작업 안해주셔도 무방합니다!
'Development > Android' 카테고리의 다른 글
[안드로이드] Android Bitmap byte[] 변환 (0) | 2015.10.12 |
---|---|
[안드로이드] Android SQLite - 2 Handler 클래스 (0) | 2015.10.11 |
[안드로이드] Android DecimalFormat (0) | 2015.10.09 |
[안드로이드] Android Fused Location Provider (0) | 2015.10.08 |
[안드로이드] 위젯 (Widget) 만들기! (0) | 2015.10.07 |
댓글