안드로이드 개발 질문/답변
(글 수 45,052)
계속 업데이트 되는 DB를 사용하려는데 현재까지 업데이트 된 내용을 리소스로 제공하고 싶습니다.
DB 파일을 어느 디렉토리에 넣어서 어떻게 읽어와야 하나요??
아 그리고 이렇게 제공되는 DB는 SD 카드에 자동으로 저장되나요?
DB 파일을 어느 디렉토리에 넣어서 어떻게 읽어와야 하나요??
아 그리고 이렇게 제공되는 DB는 SD 카드에 자동으로 저장되나요?
2010.03.02 14:19:06
죄송합니다. 그럼에도 답변 주셔서 감사합니다.
더 구체적으로 질문 드리겠습니다.
로또 관련 어플을 개발중인데 매 주 로또 번호를 다운 받습니다.
현재는 378회까지 다운 받은 상태인데 이 데이터를 리소스로 제공하지 않으면
사용자는 어플을 설치한 후에 378회까지 다운 받는 것을 기다려야 하기 때문에
현재까지의 정보만이라도 리소스의 형태로 제공하기 위함입니다.
물론 그 뒤로 받게 되는 로또번호도 저장이 되어야 합니다.
그래서 현재 에뮬레이터에 저장되어 있는 DB 파일을 가져와서 리소스로 사용할 수 있는지에 대한 질문입니다.
그리고 이 데이터들 쌓여서 용량이 커지면 사용자에게 부담이 될 수 있을 것 같아서
SD 카드에 저장을 하도록 하는게 좋지 않을까 해서 질문하였습니다.
더 구체적으로 질문 드리겠습니다.
로또 관련 어플을 개발중인데 매 주 로또 번호를 다운 받습니다.
현재는 378회까지 다운 받은 상태인데 이 데이터를 리소스로 제공하지 않으면
사용자는 어플을 설치한 후에 378회까지 다운 받는 것을 기다려야 하기 때문에
현재까지의 정보만이라도 리소스의 형태로 제공하기 위함입니다.
물론 그 뒤로 받게 되는 로또번호도 저장이 되어야 합니다.
그래서 현재 에뮬레이터에 저장되어 있는 DB 파일을 가져와서 리소스로 사용할 수 있는지에 대한 질문입니다.
그리고 이 데이터들 쌓여서 용량이 커지면 사용자에게 부담이 될 수 있을 것 같아서
SD 카드에 저장을 하도록 하는게 좋지 않을까 해서 질문하였습니다.
2010.03.02 15:55:18
안드로이드 인스톨러가 앱을 설치시에 데이터 부분을 별도로 sd카드에 설치하도록 지원하지 않는 것 같습니다.
따라서 앱이 인스톨되거나 업그레이드 되어 처음 실행시에 그동안에 받아 놓은 데이터를 sd카드에 저장하여 앱에서 사용할 수 있게 할 수는 있겠으나, 이미 설치시에 그 데이터를 앱의 내부에 포함하고 있는 상태에서 sd에 저장해 놔봐야 실효가 없다고 볼 수 있겠습니다.
제가 이 앱을 만든다면 3가지 방법을 고려해보겠는데요.
1번 - 로또 데이터를 외부에서 사용자가 다운받아 sd에 저장하게 한다면, 초기에 앱만 배포하고 매주 데이터를 갱신하여 다운받을 수 있는 장치(별도의 앱이든, 서버든 등등...)를 마련한다. 이 방법은 처음 개발은 쉬울 수 있으나 유지비용이 아주 많이 들어갈 것 같습지다.
2번 - 로또가 1주일마다 갱신되므로 앱을 매주 업데이트 해준다고 가정하면 로또정보를 xml 또는 다른 포맷이더라도 앱의 리소스로 관리하여 매주 그 리소스를 갱신한 후에 앱을 재배포한다. 이것도 관리가 상당히 귀찮겠군요.
3번 - 앱의 사용자가 필요시에 로또 데이터를 온라인으로 갱신할 수 있도록 하고 그 데이터는 sqlite3 데이터베이스를 이용하여 관리할 수 있게 한다. 저는 개인적으로 이 방법을 사용하고 싶군요. 초기 데이터를 적재하기 위한 노력이 개발자나 사용자에게 부담을 줄 수는 있으나 이 방법이 합리적이지 않을까 싶네요.
우려하시는 것처럼 데이터 용량이 많아지면 사용자에게 부담이 되겠지만, 사전과 같은 어플이 아닌 이상에야 그렇게 많은 데이터가 쌓이리라고 보여지지 않습니다.
따라서 앱이 인스톨되거나 업그레이드 되어 처음 실행시에 그동안에 받아 놓은 데이터를 sd카드에 저장하여 앱에서 사용할 수 있게 할 수는 있겠으나, 이미 설치시에 그 데이터를 앱의 내부에 포함하고 있는 상태에서 sd에 저장해 놔봐야 실효가 없다고 볼 수 있겠습니다.
제가 이 앱을 만든다면 3가지 방법을 고려해보겠는데요.
1번 - 로또 데이터를 외부에서 사용자가 다운받아 sd에 저장하게 한다면, 초기에 앱만 배포하고 매주 데이터를 갱신하여 다운받을 수 있는 장치(별도의 앱이든, 서버든 등등...)를 마련한다. 이 방법은 처음 개발은 쉬울 수 있으나 유지비용이 아주 많이 들어갈 것 같습지다.
2번 - 로또가 1주일마다 갱신되므로 앱을 매주 업데이트 해준다고 가정하면 로또정보를 xml 또는 다른 포맷이더라도 앱의 리소스로 관리하여 매주 그 리소스를 갱신한 후에 앱을 재배포한다. 이것도 관리가 상당히 귀찮겠군요.
3번 - 앱의 사용자가 필요시에 로또 데이터를 온라인으로 갱신할 수 있도록 하고 그 데이터는 sqlite3 데이터베이스를 이용하여 관리할 수 있게 한다. 저는 개인적으로 이 방법을 사용하고 싶군요. 초기 데이터를 적재하기 위한 노력이 개발자나 사용자에게 부담을 줄 수는 있으나 이 방법이 합리적이지 않을까 싶네요.
우려하시는 것처럼 데이터 용량이 많아지면 사용자에게 부담이 되겠지만, 사전과 같은 어플이 아닌 이상에야 그렇게 많은 데이터가 쌓이리라고 보여지지 않습니다.
업데이트되는 내용이라는 것이 앱이 업데이트될 때 데이터베이스의 변경사항이라는 것인지,
DB가 sqlite3를 사용하여 관리되는 내용인지,
db의 내용을 파일로 관리하고 싶어하시는지...
잘 이해를 못하겠네요.
아는대로 말씀을 드리면,
sqlite3 데이터베이스는 sd에 저장될 수 없고 /data/data/패키지/databases/데이터베이스명 이런 경로로 저장이 됩니다.
sqlite3 데이터베이스의 변경사항은 앱이 업데이트될 때 SQLiteOpenHelper 를 이용하여 onUpgrade(...) 에서 처리하시면 됩니다.
질문을 좀 상세하게 해주시면 답변하는데 도움이 되겠네요.