하다하다안되서 새 프로젝트 만들어서 assets/database에 db파일을 넣어놓고 메인액티비티를 이렇게 짰습니다.
package com.asd;
import java.io.File;
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.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.widget.Toast;
public class AsdActivity extends Activity {
public static final String ROOT_DIR = "/data/data/com.Twenty_1/databases/";
ProductDBHelper mHelper;
class ProductDBHelper extends SQLiteOpenHelper{
public ProductDBHelper(Context context) {
super(context, "animal.db", null, 1);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
public void setDB() {
File folder = new File(ROOT_DIR);
if(folder.exists()) {
}
else {
folder.mkdirs();
//Toast.makeText(this, "폴더생성", Toast.LENGTH_LONG).show();
}
AssetManager assetManager = getResources().getAssets();
File outfile = new File(ROOT_DIR+"animal.db"); //--폰에 위치할 경로
InputStream is = null;
FileOutputStream fo = null;
long filesize = 0;
try {
// --asset 폴더 및 복사할 DB 지정
is = assetManager.open("animal.db", AssetManager.ACCESS_BUFFER);
filesize = is.available(); //--사이즈 검증
// 파일이 없거나 패키지 폴더에 설치된 DB파일이 포함된 DB파일 보다 크기가 같지않을 경우 DB파일을 덮어 쓴다.
if (outfile.length() <= 0) {
byte[] tempdata = new byte[(int) filesize];
is.read(tempdata);
is.close();
outfile.createNewFile();
fo = new FileOutputStream(outfile);
fo.write(tempdata);
fo.close();
}
else
{
//Toast.makeText(this, "db있음", Toast.LENGTH_LONG).show();
}
} catch (IOException e) {
Toast.makeText(this, "db이동실패", Toast.LENGTH_LONG).show();
}
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
저는 자바를 접한지 일주일된 초보인데 검색결과로만 생각해보면 저 경우에 어플리케이션을 실행하면 에뮬레이터를 켰을때 DDMS로 보면 data/data/com.asd/databases안에 animal.db가 생겨있어야 되는게 아닌가 생각하는데 그게 아닌걸까요 ㅠㅠ 지금 프로그래밍은 다 해놓고 외부 DB만 끌어다쓸수 있으면 끝인데 이게 안되네요 ㅠㅠ




setDB는 큰문제가 없을 듯 합니다. 단지. 첨부한 코드엔 setDB 부르는게 안보이는데.. setDB()를 부르는 곳이 따로 있는지 궁금하네요...