KOTLIN

코틀린(Kotlin) 안드로이드 스튜디오 SQLite 데이터베이스 사용하기-1

사과씨앗 2021. 1. 24. 13:12
728x90
반응형

안녕하세요 이번 글에서는 SQLite 데이터베이스를 사용해 보겠습니다.

 

안드로이드에서는 애플리케이션의 효과적인 데이터 관리를 위하여 구조화된 내부 SQL Database인 SQLite Database를 지원하고 있습니다. 애플리케이션 사용 과정에서 발생하는 용량이 크지 않은 데이터들은 굳이 서버에 접속하는 수고를 들이지 않고 내부 데이터베이스를 통해 관리할 수 있습니다.

 

먼저 프로젝트를 새로 하나 생성하여 주시고 기본 패키지 아래 객체로 사용할

Memo 클래스와

SqliteHeper클래스를 하나 만들어 줍니다.

 

package com.example.sqlite_kt

data class Memo(var id:Long?, var content:String, var datetime:Long) {}

 

 

package com.example.sqlite_kt

import android.content.ContentValues
import android.content.Context
import android.database.sqlite.SQLiteDatabase
import android.database.sqlite.SQLiteOpenHelper

// SQLiteOpenHelper 상속받아 SQLite 를 사용하도록 하겠습니다.
class SqliteHelper(context: Context?, name: String?, factory: SQLiteDatabase.CursorFactory?, version: Int) : SQLiteOpenHelper(context, name, factory, version) {
    
    //onCreate(), onUpgrade() 두가지 메소드를 오버라이드 받아 줍시다.
    
    //데이터베이스가 만들어 지지않은 상태에서만 작동합니다. 이미 만들어져 있는 상태라면 실행되지 않습니다.
    override fun onCreate(db: SQLiteDatabase?) {
        //테이블을 생성할 쿼리를 작성하여 줍시다.
        val create = "create table memo (id integer primary key, content text, datetime integer)"
            //실행시켜 줍니다.
            db?.execSQL(create)
    }

    override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {

    }

    //insert 메소드
    fun insertMemo(memo:Memo){
        val values = ContentValues()
        //넘겨줄 컬럼의 매개변수 지정
        values.put("content",memo.content)
        values.put("datetime",memo.datetime)
        //쓰기나 수정이 가능한 데이터베이스 변수
        val wd = writableDatabase
        wd.insert("memo",null,values)
        //사용이 끝나면 반드시 close()를 사용하여 메모리누수 가 되지않도록 합시다.
        wd.close()
    }


    //select 메소드
    fun selectMemo():MutableList<Memo>{
        val list = mutableListOf<Memo>()
        //전체조회
        val selectAll = "select * from memo"
        //읽기전용 데이터베이스 변수
        val rd = readableDatabase
        //데이터를 받아 줍니다.
        val cursor = rd.rawQuery(selectAll,null)
        
        //반복문을 사용하여 list 에 데이터를 넘겨 줍시다.
        while(cursor.moveToNext()){
            val id = cursor.getLong(cursor.getColumnIndex("id"))
            val content = cursor.getString(cursor.getColumnIndex("content"))
            val datetime = cursor.getLong(cursor.getColumnIndex("datetime"))

           list.add(Memo(id,content,datetime))
        }
        cursor.close()
        rd.close()

        return list
    }

    //update 메소드
    fun updateMemo(memo:Memo){
        val values = ContentValues()

        values.put("content",memo.content)
        values.put("datetime",memo.datetime)

        val wd = writableDatabase
        wd.update("memo",values,"id=${memo.id}",null)
        wd.close()

    }

    //delete 메소드
    fun deleteMemo(memo:Memo){
        val delete = "delete from Memo where id = ${memo.id}"
        val db = writableDatabase
        db.execSQL(delete)
        db.close()

    }

}

 

기본적인 테이블 생성과 DML기능을 만들어 보았습니다.

 

다음 글에서 만들어 놓은 기능을 화면에서 활용하여 보겠습니다.

 

감사합니다.

728x90
반응형