개발 창고/Android

[Kotlin] How To enter a null value for "ContentValues" (putNull)

로이제로 2023. 12. 10. 22:00
반응형

SQLite에서 데이터 입력 시에 ContentValues가 필요합니다.

val dbHelper:DBHelper = DBHelper(context, "DB명", null, 1)
val database:SQLiteDatabase = dbHelper.writableDatabase

val contentValues = ContentValues()
contentValues.put("title", "ContentValues putNull")
contentValues.put("contents", "글 메모입니다.")

database.insert("테이블명", null, contentValues)

 위는 기본적으로 테이블에 insert하는 로직입니다.

 이를 수행하면, title / memo가 "테이블명"이라는 테이블에 입력되게 됩니다.

결과는 아래와 같습니다.

title contents
ContentValues putNull 글 메모입니다.

 

 그런데 만약 제목은 있고 내용은 아직 입력하지 않는 임시저장인 경우 어떻게 해야 할까요?

val dbHelper:DBHelper = DBHelper(context, "DB명", null, 1)
val database:SQLiteDatabase = dbHelper.writableDatabase

val contentValues = ContentValues()
contentValues.put("title", "내용은 나중에 입력할게요")
contentValues.put("contents", null)

database.insert("테이블명", null, contentValues)

 

 위와 같이 입력한다면 아래와 같은 contents를 입력하는 부분에서 오류가 발생합니다.

put에 null을 입력했을때의 오류 화면

 

 put으로는 null을 입력할 수 없고, putNull을 이용해주어야 합니다.

putNull을 이용하여 오류를 해결

 

 위와 같이 putNull("contents")를 해주면, contents에는 null값이 입력되게 됩니다. 하지만 주의해야 할 사항은 입력하는 테이블에 contents 컬럼이 null을 허용하는 컬럼인지 반드시 체크해야 합니다.

반응형