본문 바로가기
Development/Android

[안드로이드] Android SQLite - 2 Handler 클래스

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


안녕하세요 푸민입니다.

이전 글에서는 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_NAMEnew 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() 메소드를 호출하고 테이블명, 값 조건 순으로 넣어주면 됩니다.

반응형

댓글