-
(2분 읽기) 안드로이드 SQLite Cursor 완전 정복! 데이터 탐색 쉽게 해보자 🖥️Android 개발/데이터 처리 및 관리 2025. 2. 12. 19:32
SQLite에서 데이터를 조회하면 결과가 한 번에 다 나오는 게 아니라, 포인터(Cursor)로 조작해야 해요! 🤔
그럼 Cursor가 정확히 뭐냐고? 쉽게 말하면 조회된 데이터 집합을 다루는 포인터라고 보면 돼요!데이터가 많을 때 필요한 부분만 가져오고, 원하는 위치로 이동할 수 있게 해줘서 성능적으로도 좋아요! 😎
오늘은 SQLite의 Cursor를 어떻게 활용하는지 깔끔하게 정리해볼게요! 🚀
✅ Cursor, 왜 필요할까?
✔ SQL의 결과 집합을 다루는 객체 (결과를 한 번에 메모리에 로드하지 않음)
✔ 포인터(위치)를 반환 → 필요할 때 데이터 하나씩 가져와서 처리
✔ 다양한 이동 기능 제공 → 원하는 위치로 커서 이동 가능
✅ Cursor 주요 기능 정리!
1️⃣ Cursor 닫기 & 해제
조회한 데이터가 필요 없으면 Cursor를 닫아야 해요!
cursor.close() // 닫으면 더 이상 사용 불가
✔ close() → Cursor를 완전히 닫음 (더 이상 사용 불가)
✔ deactivate() → 리소스를 최소화 (재활성화 가능)
✔ requery() → Cursor를 다시 활성화
2️⃣ 컬럼 정보 확인
조회한 데이터에서 컬럼 개수와 이름 확인하고 싶다면?
val columnCount = cursor.columnCount // 컬럼 개수 val columnNames = cursor.columnNames // 컬럼 이름 목록 val columnIndex = cursor.getColumnIndex("name") // 특정 컬럼 인덱스 가져오기
✔ getColumnCount() → 현재 결과 집합의 컬럼 개수
✔ getColumnNames() → 컬럼 이름 목록 가져오기
✔ getColumnIndex(columnName) → 특정 컬럼의 인덱스 가져오기
3️⃣ 데이터 가져오기
조회한 데이터에서 컬럼 값을 가져오는 법
val name = cursor.getString(cursor.getColumnIndex("name")) val age = cursor.getInt(cursor.getColumnIndex("age"))
✔ getString(columnIndex) → 컬럼 값을 문자열(String) 로 가져오기
✔ getInt(columnIndex) → 컬럼 값을 정수(Int) 로 가져오기
✔ getType(columnIndex) → 해당 컬럼의 데이터 타입 확인SQLite는 타입이 엄격하지 않아서 getString()으로 거의 다 가져올 수 있지만,
데이터 타입을 맞춰서 쓰는 게 좋음! (안정성을 위해)
4️⃣ 데이터 탐색 (커서 이동)
조회한 결과가 여러 개라면? 이동하면서 하나씩 처리해야 해요!
if (cursor.moveToFirst()) { // 첫 번째 행으로 이동 do { val name = cursor.getString(cursor.getColumnIndex("name")) println("이름: $name") } while (cursor.moveToNext()) // 다음 행으로 이동 }
✔ moveToFirst() → 첫 번째 행으로 이동
✔ moveToLast() → 마지막 행으로 이동
✔ moveToNext() → 다음 행으로 이동 (마지막이면 false)
✔ moveToPrevious() → 이전 행으로 이동 (첫 행이면 false)
✔ moveToPosition(n) → 특정 위치로 이동
✔ isFirst(), isLast() → 현재 위치 확인
✅ Cursor 활용 예제 (조회하고 데이터 가져오기!)
val cursor = db.rawQuery("SELECT * FROM users", null) if (cursor.moveToFirst()) { // 첫 번째 데이터부터 탐색 do { val id = cursor.getInt(cursor.getColumnIndex("id")) val name = cursor.getString(cursor.getColumnIndex("name")) val age = cursor.getInt(cursor.getColumnIndex("age")) println("ID: $id, 이름: $name, 나이: $age") } while (cursor.moveToNext()) // 다음 데이터로 이동 } // 다 썼으면 꼭 닫아주기! cursor.close()
✅ moveToFirst()를 먼저 호출해야 데이터가 있는지 확인 가능!
✅ moveToNext()를 사용해서 하나씩 가져오기!
✅ 다 사용한 후에는 반드시 close() 호출!
🚀 정리: Cursor, 이렇게만 쓰면 끝!
✔ SQL 조회 결과를 Cursor 객체로 받아서 탐색
✔ moveToFirst(), moveToNext()로 데이터 하나씩 처리
✔ getString(), getInt()로 컬럼 값 가져오기
✔ 사용이 끝나면 close() 필수!SQLite에서 데이터를 다룰 때 Cursor는 필수니까, 익숙해지면 개발할 때 정말 편해질 거예요!
이제 직접 써보면서 연습해보자! 💪🔥'Android 개발 > 데이터 처리 및 관리' 카테고리의 다른 글
(3분 읽기) 안드로이드 SQLite 쿼리 마스터하기! 🖥️ (0) 2025.02.12 (1분 읽기) 안드로이드에서 SQLite? 어렵지 않아요! 데이터 관리 쉽게 해보자 🖥️ (0) 2025.02.12 (1분 읽기) 안드로이드 SQLite 완전 정복! 데이터 저장 & 트랜잭션 관리 🖥️ (0) 2025.02.12 (30초 읽기) SQLite3: 가볍고 강력한 파일 기반 데이터베이스! 🖥️ (0) 2025.02.12 (30초 읽기) Room DB: 안드로이드 데이터 저장, 이게 답이다! 🖥️ (0) 2025.02.12