Android
[안드로이드] SQLite 사용법(Kotlin)
codeandcoffee
2024. 6. 7. 21:13
1. SQLite 소개
SQLite는 안드로이드 애플리케이션 내에 경량의 데이터베이스를 내장하여 사용할 수 있게 해줍니다. 주로 로컬 데이터를 저장하고 관리하는 데 사용됩니다.
2. SQLiteOpenHelper 클래스 생성
SQLiteOpenHelper는 데이터베이스를 생성하고 관리하는 데 도움이 되는 안드로이드의 기본 클래스입니다. 데이터베이스를 생성하고 스키마를 관리하기 위해 이 클래스를 상속받아야 합니다.
import android.content.Context
import android.database.sqlite.SQLiteDatabase
import android.database.sqlite.SQLiteOpenHelper
class DatabaseHelper(context: Context) : SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) {
companion object {
private const val DATABASE_NAME = "example.db"
private const val DATABASE_VERSION = 1
// 테이블 생성 SQL 문
private const val TABLE_CREATE =
"CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER);"
}
override fun onCreate(db: SQLiteDatabase) {
db.execSQL(TABLE_CREATE)
}
override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
db.execSQL("DROP TABLE IF EXISTS users")
onCreate(db)
}
}
3. 데이터 삽입
데이터베이스에 데이터를 삽입하는 방법입니다. SQLiteDatabase 객체의 insert
메서드를 사용합니다.
import android.content.ContentValues
fun insertUser(name: String, age: Int) {
val db = this.writableDatabase
val values = ContentValues().apply {
put("name", name)
put("age", age)
}
db.insert("users", null, values)
db.close()
}
4. 데이터 조회
데이터베이스에서 데이터를 조회하는 방법입니다. SQLiteDatabase 객체의 query
메서드를 사용합니다.
import android.database.Cursor
fun getAllUsers(): Cursor {
val db = this.readableDatabase
return db.query("users", null, null, null, null, null, null)
}
5. 데이터 업데이트
데이터베이스의 데이터를 업데이트하는 방법입니다. SQLiteDatabase 객체의 update
메서드를 사용합니다.
fun updateUser(id: Int, name: String, age: Int) {
val db = this.writableDatabase
val values = ContentValues().apply {
put("name", name)
put("age", age)
}
db.update("users", values, "id = ?", arrayOf(id.toString()))
db.close()
}
6. 데이터 삭제
데이터베이스에서 데이터를 삭제하는 방법입니다. SQLiteDatabase 객체의 delete
메서드를 사용합니다.
fun deleteUser(id: Int) {
val db = this.writableDatabase
db.delete("users", "id = ?", arrayOf(id.toString()))
db.close()
}
7. 전체 코드
import android.content.Context
import android.database.sqlite.SQLiteDatabase
import android.database.sqlite.SQLiteOpenHelper
import android.content.ContentValues
import android.database.Cursor
class DatabaseHelper(context: Context) : SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) {
companion object {
private const val DATABASE_NAME = "example.db"
private const val DATABASE_VERSION = 1
// 테이블 생성 SQL 문
private const val TABLE_CREATE =
"CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER);"
}
override fun onCreate(db: SQLiteDatabase) {
db.execSQL(TABLE_CREATE)
}
override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
db.execSQL("DROP TABLE IF EXISTS users")
onCreate(db)
}
fun insertUser(name: String, age: Int) {
val db = this.writableDatabase
val values = ContentValues().apply {
put("name", name)
put("age", age)
}
db.insert("users", null, values)
db.close()
}
fun getAllUsers(): Cursor {
val db = this.readableDatabase
return db.query("users", null, null, null, null, null, null)
}
fun updateUser(id: Int, name: String, age: Int) {
val db = this.writableDatabase
val values = ContentValues().apply {
put("name", name)
put("age", age)
}
db.update("users", values, "id = ?", arrayOf(id.toString()))
db.close()
}
fun deleteUser(id: Int) {
val db = this.writableDatabase
db.delete("users", "id = ?", arrayOf(id.toString()))
db.close()
}
}
결론
SQLiteOpenHelper 클래스를 사용하여 데이터베이스를 생성하고, 데이터를 삽입, 조회, 업데이트, 삭제하는 기본적인 CRUD 작업을 수행하는 방법을 배웠습니다. 이를 통해 로컬 데이터베이스를 활용하여 다양한 기능을 구현할 수 있습니다.