반응형
단어 앱을 만들면서 단어시험 기록을 불러와 가장 최근에 친 시험기록을 받아오는 과정에서 실수한 부분이 있어서 꽤나 고생했다.
평범하게 생각해서 시험 기록중 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
반응형
'문제 해결' 카테고리의 다른 글
[Android] ViewHolder 패턴을 사용하면서 생긴 오류 문제해결 (0) | 2018.09.02 |
---|---|
[Android] EditText로 ListView 구성하기 (0) | 2018.08.27 |
[Android] 다이얼로그에서 액티비티로 값 전달하기 (1) | 2018.08.20 |
소수 판별법, 왜 루트 N 이하의 수만 나눠보면 되는 것일까? (3) | 2018.03.28 |
[C++] template, typename, class 키워드 (0) | 2017.07.12 |