[Android] 데이터베이스(.db)파일 SQLite로 테이블 읽어오기 - SQLite과 T Map API를 이용해 데이터베이스(.db)파일 데이터 다중 마커 생성하기(2)
[Android] 데이터베이스(.db)파일 SQLite로 테이블 읽어오기
- SQLite과 T Map API를 이용해 데이터베이스(.db)파일 데이터 다중 마커 생성하기(2)
https://haem-jsp.tistory.com/26
[Android] 엑셀 파일을 .db파일로 변환 - SQLite과 T Map API 이용해서 엑셀 파일, .db 파일 다중 마커 생성
마지막 학기를 마무리하고 취업준비를 하느라, 포스팅이 많이 늦어졌지만. 캡스톤 디자인에서 작성한 코드, 활용한 코드들을 하나씩 블로그에 작성하려 해본다. (끝까지 작성할 수 있길,,,) 앞선
haem-jsp.tistory.com
놀랍게도 마지막 포스트가 1월 20일,, 벌써 4개월 전이다. 자사연수 이후로 포스트를 제대로 작성하지 못했던 만큼, 조금 여유가 생긴 지금, 블로그를 작성하려고 한다.. (이번에도 바래본다,,, 제발 끝까지 작성할 수 있길..)
앞선 포스트에서 엑셀파일을 데이터베이스 파일로 변환하는 방법을 작성했다. 이번 포스트에서는 데이터베이스 파일(.db)을 코드를 통해 어떻게 읽어오는지에 관해 작성해보려고 한다.
2. .db파일을 SQLite에서 사용하는 법
1) 데이터베이스 테이블을 저장할 Class 작성하기
앞선 포스트에서 수집한 정보는 편의점 데이터로, market.db로 저장했었다. market.db의 market 테이블의 정보는 _ID, STORENAME, FRANCHISE, LATITUDE, LONGITUDE, ADDRESS 로 구성되어있으며, 해당 데이터를 저장할 클래스를 아래와 같이 생성하였다. Market 클래스에 변수와 set, get 함수들을 각각 작성해주었다.
2) 데이터베이스 테이블을 읽을 DatabaseHelper Class 작성하기
데이터베이스 파일을 열고, 읽고, 정보를 가져올 수 있는 DatabaseHelper 클래스를 작성했다.
- OpenDatabaseFile()
CheckDatabaseFileExist를 통해 데이터베이스 파일의 유무를 확인하고 데이터베이스 파일이 없으면 Database를 생성하고 데이터베이스 파일이 있다면 해당 파일을 읽어 mDatabase에 저장한다
- CreateDatabase()/CopyDatabaseFile()
CopyDatabaseFile은 assets폴더에 있는 데이터베이스파일을 읽어 지정한 데이터베이스 경로에 데이터베이스 파일을 복사해 저장한다.
- getTableData()
Cursor을 이용해 데이터베이스의 정보를 읽는다. 데이터를 한 행씩 읽어 market에 저장하고, 이를 List에 추가해 List를 반환한다.
Full Code of DatabaseHelper.java are Updated In https://github.com/haemin-prog/SABANA-test/blob/master/app/src/main/java/com/example/test/DatabaseHelper.java
3) DatabaseHelper을 호출하는 메소드 작성하기
데이터베이스를 읽어오는 자바파일에서 DatabaseHelper을 호출하는 메소드를 작성한다. 본 프로젝트에서는 MainActivity에서 데이터를 활용하기 때문에 MainActivity에 메소드를 작성해주었다.
디버깅을 통해 데이터가 잘 저장되는지 확인했다.
블로그에 포스트할때는 조금 깔끔한 코드로 올리고 싶어서, 새로 프로젝트를 생성해 복기하듯 정리하면서 코드를 작성하고 있다,, 정말 캡스톤디자인 코드가 굉장히 더럽고,, 비효율적이고,, 다시 보니 새삼 충격적이다.. 이번 DBHelper도 로직도 조금 꼬여있고, 굳이 DBAdapter이랑 DBHelper로 나눠놓은게 다시 보니,, 왜 굳이 저렇게 짰을까,, 싶었다.. 다시 정리하면서 포스팅을 하니, 굳어있던 머리가 다시 돌아가는 기분이다..ㅎㅎ 조금 더 깔끔해진 코드를 보니 당연 기분도 좋고,,ㅎㅎ
다음 포스트는 T Map에서 읽어온 데이터로 다중 마커를 생성하는 방법을 설명하고자 한다. 빠른 시일 내에 돌아올 수 있기를,,,!