2010년 8월 11일

PC에서 작성한 SQLite 파일을 안드로이드에서 사용하기

이 방법은 아주 간단합니다. SQLiteDatabase 객체의 openDatabase 메소드를 사용하면 됩니다.

자세한 사항은 안드로이드 API 문서인 http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html를 참고하시구요. 간단히만 설명드리면,

openDatabase 메소드는 3개의 파라미터를 받습니다.
 - path : 데이터베이스 절대 파일 위치

 - factory : 그냥 null로 주시면 됩니다.
 - flags : 읽기/쓰기 겸용이면 OPEN_READWRITE, 읽기 전용이면 OPEN_READONLY
만약 sd 카드에 저장한 withbible_v1_6_0/bible 디렉토리에 kjv.db 파일을 사용하신다면 아래와 같이 쓰시면 됩니다.

String path =  "/sdcard/withbible_v1_6_0/bible/kjv.db";

SQLiteDatabase sqlite = null;
sqlite = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READONLY);

sd 카드가 아닌 메모리의 파일을 쓰신다면, path 부분을 아래와 같이 바꿔주시면 됩니다. 아래에서 this는 context 객체를 말합니다.

String path = this.getFilesDir() + "/withbible_v1_6_0/bible/kjv.db";
PC에서 생성한 데이터베이스 파일은 안드로이드 assets 폴더나 res -> raw 폴더에 저장을 하시고, 필요시 sd 카드나 메모리로 복사해서 사용하시면 됩니다.  아래의 코드는 raw 폴더에 저장되어 있고, kjv.zip으로 압축되어 있을 경우에 사용방법입니다. 참고로, 안드로이드는 raw 폴더의 파일이 1M가 넘으면 꼭 압축을 해야합니다. 아래에서 this는 context 객체를 의미합니다.

InputStream is = this.getResources().openRawResource(R.raw.kjv);

ZipInputStream zis = new ZipInputStream(is);
zis.getNextEntry();

String outputFilePath = this.getFilesDir() + "/withbible_v1_6_0/bible/kjv.db";

FileOutputStream fos = new FileOutputStream(outputFilePath);
byte[] buffer = new byte[4096];
while(true) {
    int readSize = zis.read(buffer, 0, buffer.length);
    if (readSize==-1) break;
    fos.write(buffer, 0, readSize);
}

fos.close();
zis.close();
is.close();

SQLite 데이터 편집 도구 소개 - SQLite Database Browser

이전에 SQLite Expert Personal Edition를 소개한 적이 있는데, 이번에는 비슷한 기능을 하는 도구인 SQLite Database Browser를 소개합니다. 오픈소스로 개발이 되는 것이라 모든 기능을 무료로 사용할 수 있습니다.

http://sourceforge.net/projects/sqlitebrowser/에서 다운로드 받으시면 됩니다.

압축을 풀고 실행을 하시면 아래와 같은 화면이 뜹니다.


File -> Open Database를 클릭하셔서 기존에 안드로이드에서 사용하는 데이터베이스를 엽니다. 만약 없으시다면 http://bible.keepvision.net/raw/bible/v1_6_0/kjv.zip을 다운로드 받으셔서 압축을 풀고 사용하시면 됩니다. 참고로, 해당 데이터는 WithBible에서 사용하는 성경데이터 파일입니다.


사용법은 간단해서 따로 설명하지는 않겠습니다. 상업용 소프트웨어가 아니라서 그런지 아무래도 일반적으로 사용하기는 SQLite Expert Personal Edition이 훨씬 좋습니다.

android_metadata 테이블에 대해서는 SQLite Expert Personal Edition을 소개할 때 설명되어 있으니 해당 포스트를 참조하시구요. 한글인 경우에는 그냥 "ko_KR"로 하시면 됩니다.


이 도구의 가장 큰 장점은 데이터베이스를 export, import 하는 기능이 있다는 겁니다. 만약, 대량의 데이터를 수정할 필요가 있을 경우 해당 테이블을 export 받은 후에 데이터를 변경하고 import 하면 무지하게 편리합니다. export는 sql 파일 또는 csv 파일로 할 수가 있는데, 불행히도 한글의 경우 csv 파일로 import를 받으면 글자가 깨집니다. 그래서 sql 파일로 export하고 import 하는 기능을 사용하는 것을 적극 추천합니다.
 
File -> Export -> Database to SQL file 메뉴를 사용하여 데이터베이스를 export 합니다.
 

export 한 파일을 Edit plus, Ultra edit 등을 이용하여 수정합니다.

File -> Import -> Database to SQL file 메뉴를 사용하여 데이터베이스를 import 합니다. 이때, 새로운 데이터베이스로 import 하시는 것이 좋습니다. 새로운 데이터베이스로 import하지 않는 경우 에러가 자주 발생합니다.





이제 제대로 되었는지 확인하시면 됩니다.

이 프로그램은 베타버젼이라 그런지 버그가 좀 있긴 합니다만, 대량의 데이터를 변경할 때 편리하기 때문에 잘 사용하신다면 아주 유용한 도구가 될겁니다.
잘 사용하시길~

다음에는 이렇게  PC에서 작업한 파일을 안드로이드 프로그램에서 어떻게 사용하는지를 알려드리겠습니다.

SQLite 데이터 편집 도구 소개 - SQLite Expert Personal Edition

SQLite Expert Personal Edition은 SQLite용 데이터를 PC상에서 편집할 경우에 무료로 사용할 수 있는 도구입니다. 공짜로 쓸 수 있다는데 가장 큰 매력이 있구요. 기능도 많고, 사용하기도 편리합니다. 안드로이드 어플을 개발할 때 데이터를 미리 만들어 놓는 경우가 있는데, 그럴때 사용하면 편리합니다.

http://www.sqliteexpert.com/ 에 가셔서 Personal Edition을 다운로드 받으시면 됩니다.

설치하시고 실행하면 아래와 같은 화면이 뜹니다.


File -> Open Database를 클릭하셔서 기존에 안드로이드에서 사용하는 데이터베이스를 엽니다. 만약 없으시다면 http://bible.keepvision.net/raw/bible/v1_6_0/kjv.zip을 다운로드 받으셔서 압축을 풀고 사용하시면 됩니다. 참고로, 해당 데이터는 WithBible에서 사용하는 성경데이터 파일입니다. 데이터 파일을 열면 Database 탭에서 데이터베이스에 대한 정보를 볼 수 있습니다.
File -> New Database를 클릭하셔서 새로운 데이터베이스를 작성하셔도 됩니다.


테이블 중에 locale이라는 단 하나의 컬럼을 가지는 android_metadata라는 테이블이 있는 것이 특이합니다. 이 테이블은 안드로이드에서 데이터베이스를 생성하면 자동으로 생성되는 테이블입니다. 해당 locale에 맞게 설정하시면 됩니다. 안드로이드에서 사용하는 locale 정보는 http://developer.android.com/reference/java/util/Locale.html에서 확인하시면 됩니다. 한글인 경우에는 그냥 "ko_KR"로 하시구요.

사실 이 테이블은 없어도 일반적인 작동에는 문제가 되지 않습니다. 이 테이블이 없을 경우 안드로이드가 기본값으로 세팅을 하는거 같습니다. 그러나, WithBible 같은 경우 중국어를 지원하는데 이 경우에 locale 값이 설정되어 있지 않으면 에러가 납니다. 그러니 다국어를 지원하실 경우에는 필히 맞는 값으로 설정하셔야 합니다.
참고로, 안드로이드 API 문서를 보시면 SQLiteDatabase 객체의 setLocale 메소드가 있습니다만, NO_LOCALIZED_COLLATORS인 경우나 읽기 전용인 경우는 아무 작업도 안 한다고 되어 있습니다.

테이블의 내용을 수정하시는 것은 아주 쉽습니다. 왼쪽 화면에서 테이블 선택하시고, Data 탭을 선택하신 다음에 수정하고자 하는 값을 클릭해서 수정하시면 됩니다. 도구 사용법은 워낙 직관적으로 잘 만들어진 프로그램이라 따로 설명하지 않아도 될거 같네요.


잘 사용하시길~