출처- http://sungho0459.blog.me/40130901885
이번에 정리할 내용은 데이터 베이스 입니다.
(구글 맵에 대해서 하려고했지만 현재 진행중이지 않은 다른 프로젝트이므로 패스~)
안드로이드에서 데이터베이스를 쓰기에 너무나 많은 검색이 필요했습니다.
이미 만들어진 db파일을 읽어오기란 방법이 많이 없더군요.
그것도 그것인데 용량이 큰 db파일은 읽어올려면 파일을 분할해서 합치는 방법이라던지
아니면 확장자 이름을 다르게 올려서 불러오기 할때 확장자를 바꾼다던지
그런 불편한 점이있었는데
저도 물론 웹상에서 따온 소스코드이지만 모두에게 편하게 알리고자
프로젝트를 압축파일로 변환하여 첨부파일에 추가해 놓았습니다.
이 프로젝트에서 하는 것은 다음과 같습니다.
1.기존 작성된 db파일을 패키지 경로에 복사한다는점 (apk형태로 같이 배포한다는 점)
2.패키지에 복사된 db파일을 읽어서 출력하는 점 입니다.
먼저 가벼운 소스코드부터 보겠습니다.
-
/*
-
* Database for Android
-
*
-
* example
-
* 1.copy to '/data/data/..'
-
* 2.read to database
-
*
-
* do not remove
-
*/
-
package com.test.db;
-
import java.io.File;
-
import java.io.FileNotFoundException;
-
import java.io.FileOutputStream;
-
import java.io.IOException;
-
import java.io.InputStream;
-
import android.app.Activity;
-
import android.content.Context;
-
import android.content.res.AssetManager;
-
import android.database.Cursor;
-
import android.database.sqlite.SQLiteDatabase;
-
import android.os.Bundle;
-
import android.util.Log;
-
import android.widget.TextView;
-
public class ActivitytestDB extends Activity {
-
/** Called when the activity is first created. */
-
@Override
-
public void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.main);
-
initialize(getApplicationContext());
-
try{
-
// 'data/data'에 생성된 db파일 읽어오기
-
// 쿼리로 db의 커서 획득
-
// 처음 레코드로 이동
-
cur.moveToFirst();
-
// 읽은값 출력
-
Log.i("move!!!",""+cur.getString(0));
-
TextView tv = (TextView)findViewById(R.id.textView);
-
tv.setText(cur.getString(0));
-
Log.i("_)",""+e.toString());
-
}
-
}
-
// check
-
folder.mkdirs();
-
if (outfile.length() <= 0) {
-
AssetManager assetManager = ctx.getResources().getAssets();
-
try {
-
long filesize = is.available();
-
byte [] tempdata = new byte[(int)filesize];
-
is.read(tempdata);
-
is.close();
-
outfile.createNewFile();
-
fo.write(tempdata);
-
fo.close();
-
e.printStackTrace();
-
}
-
}
-
}
-
}
sqlitebrower프로그램도 첨부파일에 추가해두었습니다.
알집은 잘 이용하지 않지만 그래도 공유용으로 적합하기에 egg 확장자로 파일 2개로 압축해서 올립니다.
tt.db라는 파일을 sqlitebrowser란 프로그램으로 제작하여
프로젝트의 assets 폴더에 넣고 실행한 결과 입니다.
소스코드와 파일 삽입은 아래 그림과 같습니다.
진행중인 프로젝트는 비밀로 하고 ~ ㅎㅎ
설명은 이만 줄입니다.
굳이 설명이 필요한 소스코드라고 생각되지 않네요..
쿼리문들은 http://w3schools.com/php/php_mysql_select.asp 이곳을 참고하면 좋습니다.
영어로 되어있지만 어느정도는 광고이고 실질적인건 소스코드로 잘 제공되어서 알아보기 쉽습니다.
여기서 DB가 아닌 file을 하고 싶을땐 /res/raw/에 파일을 넣고
"databases"를 "files"로 교체하면 됩니다. ("databases/" -> "files/", "databases" -> "files")
'개발 > 안드로이드' 카테고리의 다른 글
[안드로이드]캘린더(calendar) 정보 가져오기 (0) | 2011.12.12 |
---|---|
[Android] 이어받기 기능이 적용된 File Downloader (0) | 2011.12.09 |
엑셀(Excel) 파일 데이타를 `.CSV`로 변환하여 SQLite에 넣기 (0) | 2011.12.09 |
안드로이드 3.0 Fragments API (0) | 2011.10.10 |
안드로이드 호환성 패키지(Compatibility Package) 활용하기 (0) | 2011.10.10 |
댓글