본문 바로가기
프로그래밍/Android

(Android) SQLiteOpenHelper - 데이터베이스 관련 작업

by LiveData 2018. 12. 20.
반응형

SQLiteOpenHelper : 데이터베이스 관련 작업




데이터 베이스 관리할 수 있는 SQLiteOpenHelper을 extends한 class를 만들 수 있습니다.



예를 들어 아래와 같은 class를 만들 수 있습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/*
    Database 생성 및 변수,함수 관리
*/
public class SQLiteManager extends SQLiteOpenHelper {
    
    //데이터베이스 버전
    private static final int DATABASE_VERSION=1;
    //데이터베이스 이름
    private static final String DATABASE_NAME="data.db";
    //테이블 이름
    private static final String TABLE_NAME="datatable";
 
    //Table Columns
    private static final String DATA_ID="id";
    private static final String DATA_NAME="name";
 
    //SingleTon Pattern(싱글톤 패턴)
    private static SQLiteManager mInstance=null;
 
    //생성자 
    private SQLiteManager(Context context) {
        super(context,DATABASE_NAME,null,DATABASE_VERSION);
    }
 
    //SingleTon Pattern(싱글톤 패턴)
    public static SQLiteManager getInstance(Context context) {
        if(mInstance==null)
            mInstance = new SQLiteManager(context);
        return mInstance;
    }
 
    //데이터베이스가 존재하지 않을 때, 한번 실행, db를 만든다.
     @Override 
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE " +
                TABLE_NAME+ "(" +
                ALBUM_ID + " INTEGER," +
                DATA_NAME+ " TEXT" );
    }
 
    // 버전이 업그레이드 되었을 시
    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(db);
    }
 
    //... 이하 각종 insert,update,delete 하는 db
 
 
}
cs





onCreateonUpgrade를 사용하여 기존 파일 경로를 지정했던것을 안할 수 있습니다. 


또 데이터베이스 관련 변수들이 같은 Class에 있기 때문에 관리하기도 용이합니다.




- getWritableDatabase() : 데이터를 쓸 수 있습니다.

- getReadableDatabase() : 데이터를 읽을 수 있습니다.





 SQLiteManager 를 사용할때



1
2
3
private SQLiteManager db() {
        return SQLiteManager.getInstance(getContext().getApplicationContext());
}
cs


Singleton Pattern식으로 사용하시면 됩니다.


이렇게 하면 "db().만들어논 함수" 로 편하게 사용할 수 있습니다

반응형