본문 바로가기

major/Android

[Kotlin] SQLite 사용법 정리

Kotlin으로 SQLite를 활용해서 db생성, insert문, delete문, update문, select문을 사용하는 방법을 정리했습니다.

이전에 Java로 SQLite를 사용하는 방법을 정리한 적이 있는데, 언어가 바뀐 것을 제외하면 내용은 동일합니다

이전 포스팅 ☛ [Android] SQLite 사용법 정리

 

1. DB 생성

Kotlin Class 파일로 DBHelper.kt을 생성하고 아래의 코드를 복붙합니다.

class DBHelper(
    context: Context?,
    name: String?,
    factory: SQLiteDatabase.CursorFactory?,
    version: Int
) : SQLiteOpenHelper(context, name, factory, version) {


    override fun onCreate(db: SQLiteDatabase) {
        var sql : String = "CREATE TABLE if not exists mytable (" +
                "_id integer primary key autoincrement," +
                "txt text);";

        db.execSQL(sql)
    }

    override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
        val sql : String = "DROP TABLE if exists mytable"

        db.execSQL(sql)
        onCreate(db)
    }

}

그리고 MainActivity.kt에 다음과 같이 dbHelper와 database를 선언합니다.

class MainActivity : AppCompatActivity() {

    lateinit var dbHelper : DBHelper
    lateinit var database :SQLiteDatabase

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        dbHelper = DBHelper(this, "newdb.db", null, 1)
        database = dbHelper.writableDatabase
    }
}

이제 DB를 생성하고 불러왔으니 SQL문법을 알아보겠습니다.

 

2. INSERT문 사용법

아래는 insert함수를 사용한 방법입니다.

var contentValues = ContentValues()
contentValues.put("txt","Bulgogi")

database.insert("mytable",null,contentValues)

execSQL함수를 사용할 수도 있습니다.

var query = "INSERT INTO mytable('txt') values('Bulgogi');"
database.execSQL(query)

 

3. SELECT문 사용법

SELECT는 query함수를 사용해서 구현할 수 있습니다. 

아래는 "SELECT * FROM mytable"을 query로 구현한 것입니다.

var c : Cursor = database.query("mytable",null,null,null,null,null,null)
while(c.moveToNext()){
	System.out.println("txt : "+c.getString(c.getColumnIndex("txt")));
}

아니면 insert처럼 그냥 execSQL함수를 사용할 수도 있습니다.

var query = "SELECT * FROM mytable;"
var c = database.rawQuery(query,null)
while(c.moveToNext()){
	System.out.println("txt : "+c.getString(c.getColumnIndex("txt")));
}

저는 SQL문법에 익숙해서 이 방법이 더 편했습니다.

 

4. DELETE문 사용법

delete()함수를 사용해서 구현할 수 있습니다.

var arr : Array<String> = arrayOf("Bulgogi")
database.delete("mytable","txt=?",arr)

where clauses가 여러개라면 AND로 연결하면 됩니다.

var arr : Array<String> = arrayOf("Bulgogi","3")
database.delete("mytable","txt=? AND _id=?",arr)

마찬가지로, execSQL을 사용할 수도 있습니다. 내용은 생략하겠습니다.

 

5. UPDATE문 사용법

update()함수를 사용하거나, execSQL을 사용해서 구현할 수 있습니다.

var contentValues = ContentValues()
contentValues.put("txt","bye")

var arr : Array<String> = arrayOf("Bulgogi")

database.update("mytable",contentValues,"txt=?",arr)

 

기본적인 사용법은 여기까지입니다.

Java와 선언을 제외하고 크게 다르지 않아서 어렵지 않을거라고 생각합니다:>


잘못된 내용이 있다면 언제든지 댓글이나 메일로 알려주시면 감사하겠습니다.

이 포스팅이 도움이 되었다면 공감 부탁드립니다.

궁금한 점은 언제든지 댓글 남겨주시면 답변해드리겠습니다:D