문제 해결

[Android, SQL] SQLite에서 MAX값 받아오면서 생긴 오류

토아드 2018. 9. 7. 22:32
반응형

 단어 앱을 만들면서 단어시험 기록을 불러와 가장 최근에 친 시험기록을 받아오는 과정에서 실수한 부분이 있어서 꽤나 고생했다.


 평범하게 생각해서 시험 기록중 MAX값을 얻어오면 된다 생각했고, 다음과 같은 쿼리문을 작성했다.


 SELECT MAX(test_date) FROM word_test


 여기서 문제점 : 만약에 단어를 처음 등록한 날이면 다른 로직이 적용되야 되야 됬었다. 그래서 만약 word_test 테이블에 아무 값도 없을 경우를 판단해야 됬는데 이때 내가 MAX로 받아 놓고 getCount() 함수를 이용해서 값이 0이면 테이블이 비어있을 것이라 생각했던 점이 큰 실수였다. 테이블에 값이 하나도 없을경우 MAX로 받으면 0값이 리턴되고, getCount()값은 항상 1이 나오게 된다.

 

 그래서 스택 오버플로우로부터 도움을 얻었고, 다음과 같은 쿼리문으로 해결했다.


 SELECT test_date FROM word_test ORDER BY test_date DESC LIMIT 1


 이렇게 하면 최대 1개까지 출력하게 되고 테이블에 값이 없을경우 getCount()는 0을 리턴한다.


 도움받은 곳 : https://stackoverflow.com/questions/13838107/android-java-sqlite-how-to-retrieve-max-datetime

반응형