안드로이드 룸 DAO 를 사용해서 데이터에 접근하는 방법에 대한 관련 질문
@Query("SELECT * from user WHERE name LIKE '%' || :key || '%'")
fun get(key: String): List<User>
get("크롱") 호출
get("%크롱%") 호출
쿼리에 파라미터를 전달할때 LIKE를 사용하는 방법중 1, 2 방법을 찾았습니다.
결과는 같지만 코드 스타일?이 다를때 무엇을 기준으로 사용하는게 좋을까요?
`
`
테이블을 지울때 PrimaryKey를 1로 리셋하고 싶은데 어떻게 해야할까요?
@PrimaryKey(autoGenerate = true)var id: Long = 0L@Query("DELETE FROM user") fun clear()55글자 더 채워주세요.
1개의 답변이 있어요!
'%' || :key || '%'는 단순히 문자열을 이어붙여줄 뿐 %를 escape하지 않습니다.
어차피 %는 DB가 아닌 코드에서 escape해야 하기 때문에 get("%크롱%")으로 호출하는 것이 좋습니다.
그러면 그 코드만 보고도 알아서 되는 게 아니라 코드에서 직접 처리해야 한다는 것을 알 수 있습니다.
아니면 코드를 다 파악하고 있지 않다면 문서를 뒤져보고, 문서에도 없다면 코드를 뒤져봐야겠죠...TRUNCATE TABLE 대신 WHERE 없이 DELETE를 쓰신 걸로 보아 SQLite를 쓰시는 것 같은데,
SQLite는 DELETE FROM sqlite_sequence WHERE name = 'user'로 직접 삭제해야 합니다.