2018.09.10
모바일 응용 chap1. DB 테이블 설계
//
DB 사용
기본키 id : _id(언더바 추가), 반드시 추가
SqLite helper는 한번 생성되면 계속 호출됨, 필요할때마다 helper 클래스의 객체를 생성하면 된다.
onCreate도 매번 생성되는게 아니라 디비를 가져오는 작업을 최초로 수행했을 때 딱 한번만 수행됨.
디비 파일과 테이블은 처음 어플 설치했을 때만 생성됨. -> 수정되면 다시 어플 삭제하고 재설치
insert,update,delete -> getWritableDatabase()
select -> getReadableDatabase() -> query()
sql를 직접 쓰는 방법 : execSQL(), rawQuery()
메소드를 이용하여 쓰는 방법 : myDB.insert(), myDB.update().....
★ 가능하면 2메소드를 이용하여 쓰는 방법이 좋다!!! -> 다른 기능과 호환이 좋음, 숫자타입의 반환값이 있어서 잘 수행되었는지 체크할 수 있다(1방법은 반환값이 없음,,)
rawQuery 는 커서를 반환하기 때문에 사용하였을 경우 Cursor.close()
디비 닫을 때는 helper.close()
컨트롤 + q 눌러서 메소드 설명볼 수 있다
insert
컬럼 순서 틀리면 안된다.
문자열은 ' '로 묶어준다.
db.insert()
0반환 -> 레코드가 안들어갔다, 레코드가 들어가면 1이상의 값 반환
select
모든 컬럼을 다 가져오고 싶을 때 null
cursor은 결과의 앞쪽을 가리킴. 그래서 moveToNext() 해야 그 항목을 가리키게 된다.
가능하면 while문을 사용하여 시작과 끝을 확실히
getString(1) 인덱스, 테이블의 크기가 복잡하고 커질 때는 실수하기 쉬우므로 가능하면 지양,
cursor.getString(cursor.getColumnIndex(ContactDBHelper.COL_NAME)) 이라고 써주는 게 낫다.
(강의자료 18페이지)
Dto 클래스 객체를 사용하여 각 항목을 묶어서 저장할 수 있다. dto는 디자인 패턴의 일종. 이러한 문제가 발생했을 때 이런 클래스를 쓰자 라고 제안, Data Transfer Object = VO (Value Object)
dto를 관리할 객체나 리스트가 필요, 결과 항목 하나가 dto 하나에 저장되는 것
select * from table_name where name like '김%'
select * from table_name where name like '%나%'
R 문제 생겼을 때 -> rebuild project
실습
InsertContactActivity 완성
SearchContactActivity 완성
'2018-2학기 > 모바일 응용' 카테고리의 다른 글
[Mobile] Notification & Broadcast (0) | 2018.10.24 |
---|---|
모바일 응용_ 프로젝트 기획 (0) | 2018.10.12 |
[Mobile] AsyncTask (0) | 2018.10.11 |
[Mobile] Preference, Network, Thread (0) | 2018.10.11 |
[Mobile] SqLite2 (0) | 2018.10.01 |