댓글 쓰기 권한이 없습니다. 로그인 하시겠습니까?
Android
2015.03.03 17:10
SQLite 데이타 베이스 다루기
조회 수 9480 댓글 0
출처 : http://mainia.tistory.com/670 오늘은 안드로이드 DB 인 SQLite 를 다루는 방법에 대해 기술하기로 한다. 어떤 언어에서나 DB 를 다루는 것은 필수이다. 장기로 보관하고 그것을 다시 효율적으로 꺼내서 다룰수 있어서 프로그램을 다이나믹하게 만들수 있기 때문이다. 안드로이드에서는 DB 외에 저장하는 방법이 여러가지 있다. 그중하나가 SQLite 를 사용하는 것이다. 휴대폰에서 차용한 만큼 심플하고 가볍다. 그리고 안드로이드 프레임웍에서 Help 클래스를 제공한다. 그것이 크게 두가지 클래스를 사용하는데 SQLiteDatabase, SQLiteOpenHelper 이다. SQLiteOpenHelper 를 상속받은 클래스를 만들것이다. 주요 함수는 onCreate, onUpgrade, onOpen 이며 데이타베이스 생성과 관리, 존재여부에 대한 역활을 한다. SQLiteDatabase 는 실질적으로 CRUD 를 수행하는데 쓰인다.
http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html
직접 쿼리를 작성해 CRUD 를 하는 것이 아니라 getter 와 setter 메소드가 있는 Contact 클래스를 만들어 기능을 수행할 것이다.
데이타베이스를 다루기 위해 읽기와 쓰기 함수들이 필요하다. 이런 CRUD 기능을 수행하기 위해 다음 함수들을 추가한다.
위의 함수를 하나하나 구현해 본다.
(1) 새로운 contact 추가 addContact 함수는 파라미터로 Contact 객체를 넘기게 되어있다. 넘겨받은 Contact 객체의 값을 ContentValues 객체생성후 값을 채워넣는다. 값을 셋팅한 ContentValues 가 데이타베이스에 집어넣기 위한 매개체가 된다.
(2) 아이디에 해당하는 Contact 가져오기 여기에서는 id 필드에 값을 넘겨주고 해당하는 하나의 행값을 가져온다.
(3) 테이블에 포함된 모든 Contact 데이타 가져오기 아이디에 해당하는 데이타를 가져올때 사용한 db.query 와 달리 이번에는 순수한 쿼리를 이용한다. 2번에서 사용한 query 함수를 사용하기 복잡하다면 문자열로 쿼리를 조합해 rawQuery 를 사용하면 될것이다.
(4) 테이블에 포함된 데이타 숫자 세기 3번에서 사용한 방법과 동일하며 리턴받은 Cursor 객체에서 getCount 함수를 사용해 갯수정보를 가져오면 된다.
(5) contact 데이타 업데이트하기 파라미터로 넘겨준 Contact 객체를 업데이트 한다. 업데이트 해야할 contact id 는 포함되어있으므로 getter 함수를 사용해 꺼내쓰면 된다
(6) contact 데이타 삭제하기 파라미터로 넘겨준 Contact 객체에 해당하는 값을 삭제한다. 직접 쿼리를 작성해 삭제하고자 한다면 rawQuery 함수를 사용하면 된다.
전체소스에서는 onCreate 와 onUpgrade 를 구현한 것을 볼수 있다. onCreate 는 작업을 하기 위한 테이블 생성 쿼리를 수행하는 것이다. onUpgrade 는 기존에 있던 테이블을 삭제하고 새로 생성한다.
위에서 만든 클래스를 사용해 샘플데이타를 집어넣고 다시 읽어 들여서 Logcat 에서 확인할수 있도록 log 를 출력하는 예제이다.
이제 실행해서 제대로 로그가 찍히는지 확인한다. Logcat 을 통해 제대로 들어가고 불러와 지는지 확인할수 있다. Dreamy의 코드 스크랩내가 모으고 내가 보는
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Designed by sketchbooks.co.kr / sketchbook5 board skin
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5