Room 또는 SQLite을 사용할때 쿼리문에 대해서 다음과 같은 에러를 뱉는 경우를 경험하곤 한다.
ex)
@Query("SELECT * FROM data_db ORDER BY `key` ASC")
error: expected, got 'key'
다음과 같은 에러가 발생하는 이유는 'key' 가 SQLite 예약어이기 때문이다.
예약어는 어려운건 아니고 언어에서 이미 문법적인 용도로 사용되는 단어들을 의미한다.
SQlite에서 사용하는 예약어들은 다음 링크에서 확인할 수 있다.
https://www.sqlite.org/lang_keywords.html
예약어긴 하지만 해당 단어를 사용하고 싶은 경우엔
`key`
와 같이 단어에 억음부호를 붙혀주면 된다.
이게 좀 신경써졌었는데 예약어라는 것을 놓쳤었네요! 감사해요~