하다하다안되서 새 프로젝트 만들어서 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만 끌어다쓸수 있으면 끝인데 이게 안되네요 ㅠㅠ