안녕하세요 푸민입니다.
이전 글에서는 DBHelper 를 생성해보았는데요. 한번 활용해볼까요?
실제 디비에 데이터를 삭제하고 삽입하는 클래스를 하나 만듭니다. 보통은 DBHandler 라고 명칭해요~
그리고 Helper 클래스를 통해서 SQLiteDatabase 객체를 받아옵니다.
1. Getting DB
private SQLiteDatabase db;
private DBHandler(Context ctx) {
DBHelper helper = new DBHelper(ctx);
db = helper.getWritableDatabase();
}
public static DBHandler open(Context ctx) throws SQLException {
if (ctx != null) {
DBHandler handler = new DBHandler(ctx);
return handler;
}
return null;
}
위 처럼 open() 메소드를 만들어서 싱글톤같이 사용해줍니다!
2. Insert
public long insertInfo(Data data){
if(!db.isOpen()){
return 0;
}
if(data == null){
return 0;
}
ContentValues values = new ContentValues();
values.put(DBHelper.COLUMN_KEY, data.mKey);
values.put(DBHelper.COLUMN_IMG_URL, data.mImgUrl);
values.put(DBHelper.COLUMN_DATA, data.data);
if(db.insert(DBHelper.TABLE_NAME, null, values)<1){
return 0;
}
return 1;
}
DB 에 insert 작업을 할 경우에는 ContentValues 라는 객체를 생성하여 각 컬럼에 해당하는 값을 매핑시켜서 넣어줍니다. 그 뒤에 SQLiteDatabase 의 insert() 메소드를 호출합니다. 첫번째 파라미터는 테이블명, 두번째는 널처리, 세번째가 매핑 시킨 값들입니다. 이렇게 해주면 삽입한 행의 수를 리턴해줍니다. -1일 경우 실패한것입니다.
3. Delete
public void delete(String key){
db.delete(DBHelper.TABLE_NAME, DBHelper.COLUMN_KEY +"='" + key+"'", null);
}
삭제는 delete() 메소드를 사용합니다. 파라미터는 첫번째가 테이블명, 두번째가 조건입니다.
4. Select
public Data select(String key){
Data data = new Data();
Cursor cursor = db.query(DBHelper.TABLE_NAME, new String[] {
DBHelper.COLUMN_KEY,DBHelper.COLUMN_IMG_URL,
DBHelper.COLUMN_DATA},
DBHelper.COLUMN_KEY +"='" + key+"'", null, null, null, null);
if(cursor != null){
cursor.moveToFirst();
if(cursor.getCount() != 0){
do{
data.mkey=cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_KEY));
data.mImgUrl=cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_IMG_URL));
data.data=cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_DATA));
}while(cursor.moveToNext());
}
}
cursor.close();
return data;
}
Select는 조금 복잡한데 Cursor 라는 클래스를 사용합니다. DB 의 query() 메소드를 호출합니다. 파라미터는 첫번째는 테이블명, 두번째는 불러올 컬럼, 세번째는 조건입니다. 그리고 정렬하는 조건도 넣을 수 있습니다. 이렇게 호출하여 불러오면 Cursor 가 불러온 데이터를 가르키고 있습니다. 그래서 Cursor 의 위치를 처음으로 이동 시킨뒤에 해당 값을 하나씩 불러와서 저장해주면 됩니다.
5. Update
public long insertImage(String key, byte[] image){
ContentValues values = new ContentValues();
values.put(DBHelper.COLUMN_DATA, image);
if(!db.isOpen()){
return 0;
}
return db.update(DBHelper.TABLE_NAME, values, DBHelper.COLUMN_KEY + "='" + key+"'", null);
}
Update 는 입력과 같이 ContentValues 에 값을 넣어준 뒤에 update() 메소드를 호출하고 테이블명, 값 조건 순으로 넣어주면 됩니다.
'Development > Android' 카테고리의 다른 글
[안드로이드] Android Fragment 사용 예제 (0) | 2015.10.14 |
---|---|
[안드로이드] Android Bitmap byte[] 변환 (0) | 2015.10.12 |
[안드로이드] Android SQLite - 1 Helper 클래스 (0) | 2015.10.10 |
[안드로이드] Android DecimalFormat (0) | 2015.10.09 |
[안드로이드] Android Fused Location Provider (0) | 2015.10.08 |
댓글