[kotlin] 코틀린에서 SQLite와의 데이터베이스 연동

코틀린은 안드로이드 앱을 개발하는 데 널리 사용되는 언어입니다. 데이터베이스는 대부분의 모바일 앱에서 중요한 부분을 차지하며, SQLite는 안드로이드에서 내장형으로 지원되는 경량 데이터베이스입니다. 따라서 Kotlin으로 SQLite 데이터베이스를 연동하는 방법을 알아보겠습니다.

1. SQLite 데이터베이스 생성

가장 먼저, SQLite 데이터베이스를 생성하는 방법을 살펴봅시다. 데이터베이스를 생성하려면 SQLiteDatabaseHelper 클래스를 작성해야 합니다. 이 클래스는 SQLite 데이터베이스를 생성하고 버전을 관리하는 데 사용됩니다.

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) {

    override fun onCreate(db: SQLiteDatabase) {
        // 새로운 데이터베이스 테이블 작성
        val createTable = "CREATE TABLE $TABLE_NAME ($COL_ID INTEGER PRIMARY KEY, $COL_NAME TEXT)"
        db.execSQL(createTable)
    }

    override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
        // 데이터베이스 업그레이드 시 수행할 작업
        db.execSQL("DROP TABLE IF EXISTS $TABLE_NAME")
        onCreate(db)
    }

    companion object {
        private const val DATABASE_NAME = "myDatabase"
        private const val DATABASE_VERSION = 1
        private const val TABLE_NAME = "myTable"
        private const val COL_ID = "id"
        private const val COL_NAME = "name"
    }
}

2. 데이터 추가, 삭제, 조회

이제 데이터베이스에 데이터를 추가, 삭제, 조회하는 방법을 알아봅시다. SQLiteDatabaseHelper를 사용하여 데이터베이스 작업을 수행할 수 있습니다.

데이터 추가

fun insertData(name: String) {
    val db = this.writableDatabase
    val values = ContentValues()
    values.put(COL_NAME, name)
    db.insert(TABLE_NAME, null, values)
}

데이터 삭제

fun deleteData(id: String) {
    val db = this.writableDatabase
    db.delete(TABLE_NAME, "$COL_ID=?", arrayOf(id))
}

데이터 조회

fun getData(): Cursor? {
    val db = this.writableDatabase
    return db.rawQuery("SELECT * FROM $TABLE_NAME", null)
}

이제 데이터를 추가, 삭제 및 조회할 수 있는 메서드를 사용하여 SQLite 데이터베이스를 관리할 수 있습니다.

결론

코틀린을 사용하여 SQLite 데이터베이스를 안드로이드 앱에 연동하는 방법을 살펴보았습니다. 안드로이드 앱을 개발하는 과정에서 SQLite 데이터베이스를 효율적으로 활용하여 데이터를 관리할 수 있습니다.

위의 코드 및 방법은 안드로이드 개발 공식 문서 및 다양한 안드로이드 개발 커뮤니티에서 제공하는 정보를 기반으로 작성되었습니다.

참고문헌: