본문 바로가기
Android

[Kotlin] SQLite 에서 statement ? parameter 사용하기

by bryan.oh 2023. 8. 16.
반응형

 

이전 글에서 sql 문을 아래와 같이 만들어서 사용했다면,

    fun addData(tableName: String, name: String, age: Int, mobile: String){
        val sql = "insert into $tableName (name, age, mobile) values " + 
                "('$name', $age, '$mobile')"
        
        database?.let{
            it.execSQL(sql)
            logView("Table $tableName Data Inserted")
        } ?: run {
            logView("database is null!")
        }
    }

value 부분을 이렇게 만들면 sql injection에 취약하게 됩니다. : ('$name', $age, '$mobile')

그래서 다음과 같이 사용하는게 좋습니다.

 

    fun addData(tableName: String, name: String, age: Int, mobile: String){
        val sql = "insert into $tableName (name, age, mobile) values " + 
                "(?, ?, ?)"
        
        database?.let{
            it.execSQL(sql, arrayOf(name, age, mobile))
            logView("Table $tableName Data Inserted")
        } ?: run {
            logView("database is null!")
        }
    }

 

 

728x90
반응형

댓글