파일은 asset에 넣고, 복사하여 사용하면, 되지만,
"android_metadata"라는 테이블이 없으면, 오류가 생긴다. Locale정보를 저장한다는.
http://developer.android.com/reference/java/util/Locale.html
* 데이터베이스를 열 때, 생성한 데이터베이스가 아닌 외부에서 만들어져서 복사된 데이터 베이스인 경우
android_metadata라는 테이블이 데이터베이스 마다 존재해야 하며, 해당 테이블에는 로케일과 관련된 정보가 저장된다. 다음과 같은 쿼리 둘을 실행시켜 테이블을 생성하고, 필드를 추가해야 한다.
CREATE TABLE "android_metadata" ("locale" TEXT DEFAULT 'ko_KR')
INSERT INTO "android_metadata" VALUES ('ko_KR')
- 위의 방법을 이용해서 테이블에 로케일을 지정해준 경우에는 setLocale() 메소드를 이용해 로케일을 변경해 줄 수 있다. 현재 안드로이드에서 지원하는 로케일의 종류에 대해서는 Locale 클래스를 참조:
http://developer.android.com/reference/java/util/Locale.html
* 그러나, 로케일 지정을 원하지 않는 경우, 데이터베이스를 SQLiteDatabase.openDatabase() 클래스 메소드를 이용하여 열 때 SQLiteDatabase.NO_LOCALIZED_COLLATORS 옵션을 추가해서 열어 주어야 한다.
SQLiteDatabase db = SQLiteDatabase.openDatabase(dbPath, null,
SQLiteDatabase.OPEN_READONLY | SQLiteDatabase.NO_LOCALIZED_COLLATORS);
* 위 테이블이 존재하지 않는 경우 에러가 발생한다.
Note.
1. 솔직히 에러가 날 때도 있고 그렇지 않을 때 도 있었다. 불행하게도 이유는 찾지 못했다. 왜지?
2. SQLiteDatabase.NO_LOCALIZED_COLLATORS 를 추가해도 문제가 해결되지 않는 경우도 있다고 한다. 역시 이유는 알 수 없다.
'Programming > android' 카테고리의 다른 글
Android sqlCipher Proguard 오류시... (0) | 2012.07.20 |
---|---|
sqlCipher (2) | 2012.07.17 |
안드로이드 단말별 해상도 정보 (0) | 2012.05.30 |
android NDK 개발하기 설정. (0) | 2012.05.25 |
안드로이드 문자 보내기 (2) (0) | 2011.12.30 |