아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
호탕한박쥐275
호탕한박쥐27519.10.14

안드로이드 룸 DAO 를 사용해서 데이터에 접근하는 방법에 대한 관련 질문

@Query("SELECT * from user WHERE name LIKE '%' || :key || '%'") fun get(key: String): List<User>
  1. get("크롱") 호출

@Query("SELECT * from user WHERE name LIKE :key") fun get(key: String): List<User>
  1. 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'로 직접 삭제해야 합니다.