안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요. 어제 DB 관련된 것으로 질문을 드렸는데요.
답변 주신 것중에 질문이 있어서 또 이렇게 올려봅니다.
1) 안드로이드의 sql은 디비 관련 파일이 프로젝트 어디에 존재하는지요?
2) 있다면 다른 sql 매니지먼트 툴 처럼 테이블이나 필드들을 도구를 통해 보거나 수정할 수 있는지요?
3) 전에 있던 디비를 버전업하거나 재생성하라고 답변을 주신 부분이 있는데요,
이것들은 코드에 따로 생성을 해야하는건가요? 그렇다면 예제로 삶아 볼 수 있는 것들이 있는지 궁금합니다.
현재 책과 웹을 통해서 검색해보고 있는데 기초적인 것들을 생성하는 부분만 보이고 위에 것들에 대해서는 언급한 부분을 못찾겠네요.
조언 부탁드리겠습니다. 감사합니다.
답변 주신 것중에 질문이 있어서 또 이렇게 올려봅니다.
1) 안드로이드의 sql은 디비 관련 파일이 프로젝트 어디에 존재하는지요?
2) 있다면 다른 sql 매니지먼트 툴 처럼 테이블이나 필드들을 도구를 통해 보거나 수정할 수 있는지요?
3) 전에 있던 디비를 버전업하거나 재생성하라고 답변을 주신 부분이 있는데요,
이것들은 코드에 따로 생성을 해야하는건가요? 그렇다면 예제로 삶아 볼 수 있는 것들이 있는지 궁금합니다.
현재 책과 웹을 통해서 검색해보고 있는데 기초적인 것들을 생성하는 부분만 보이고 위에 것들에 대해서는 언급한 부분을 못찾겠네요.
조언 부탁드리겠습니다. 감사합니다.
2010.01.26 14:49:27
감사합니다 토리님. 찾아보니 shell 로 접근하여 파일처럼 접근을 할수 있더라구요.
3번질문에 대해서 좀 더 여쭤보려고 하는데요.
이 버전업이라고 하는 것이 없을 시에는 새로 생성하고 있을 시에는 다른 작업을 하는것인지 여쭤봅니다.
이 구문이 업데이트 버전을 실행하는 것 같은데요. 소스를 통해서가 아니라 다른 툴을 통해서도 버전업이 가능한지 궁금합니다.
3번질문에 대해서 좀 더 여쭤보려고 하는데요.
이 버전업이라고 하는 것이 없을 시에는 새로 생성하고 있을 시에는 다른 작업을 하는것인지 여쭤봅니다.
Log.w(TAG,"Upgrading database from version " + oldVersion + " to " + newVersion + ", which destroy all old data");
이 구문이 업데이트 버전을 실행하는 것 같은데요. 소스를 통해서가 아니라 다른 툴을 통해서도 버전업이 가능한지 궁금합니다.
2010.01.26 13:50:49
2 : SQLite Expert (Personal version) 과 같은 Freeware도 있습니다. 파폭을 구지 설치안하셔도 구조 및 내용을 확인할 수 있습니다.
2010.01.26 17:14:54
배포를 관점으로 보면 버전업과 관련된 재생성문은 소스를 통해서 처리 하셔야 합니다.
일반 유저에게 개발자와 같은 작업을 하도록 하는 것은 무리 입니다. ^^
2010.01.26 17:46:57
Log.w 로 올려주신 부분은 단순하게 warning을 찍는 거에 불과한데요.
지금보니 빨간책에 나온 소스를 보고 계시나봅니다.^^ 빨간책 소스를 참고해서 설명을 드리자면, 버전을 체크해서 예전 버전일 경우에 drop table 쿼리가 실행되고, 바로 이어서 onCreate(_db)라는 메소드가 나오는데 거기서 다시 디비를 만들어줍니다.
정리하자면, SQLiteOpenHelper의 onUpgrade 메소드가 호출되면 기존 테이블 정보를 모두 drop 하고, 바로 이어서 다시 create하는거죠. 설명이 된거 맞나요?
지금보니 빨간책에 나온 소스를 보고 계시나봅니다.^^ 빨간책 소스를 참고해서 설명을 드리자면, 버전을 체크해서 예전 버전일 경우에 drop table 쿼리가 실행되고, 바로 이어서 onCreate(_db)라는 메소드가 나오는데 거기서 다시 디비를 만들어줍니다.
정리하자면, SQLiteOpenHelper의 onUpgrade 메소드가 호출되면 기존 테이블 정보를 모두 drop 하고, 바로 이어서 다시 create하는거죠. 설명이 된거 맞나요?
"알짜만 골라배우는 안드로이드 프로그래밍" 책 293 페이지에 보시면 db 파일이 위치하는 곳을
/data/data/your.app.package/databases/your-db-name 이라고 되어 있으니 확인해 보세요.
2. sqlite를 위해서 Firefox 브라우저 add-on이 있습니다. 물론 Firefox 브라우저가 있어야 하고, add-on을 따로 구해서 까셔야 합니다.
이건 구글에서 찾아보시면 금방 찾으실 수 있습니다.
3. 안드로이드 책 대부분에 sqlite 예제가 있는 걸로 압니다. 참고 해 보세요.