다운로드를 통해 SD카드에 DB를 내려받았습니다.


이제 이 DB를 사용해야 하는데ㅠㅠ

이거 어떻게 가져와야 하는지 모르겠습니다..


평소에는 asset에다가 db를 넣어 놓고 아래와 같이 사용하거든요..

SD카드에 있는 db를 쓰려면 어떻게 해야 하나요?

일단 asset폴더는 사용하지 않으니 밑의 setDB 함수는 상관없고,

SQLiteOpenHelper에서 db의 경로를 지정할 수는 없을까요?

도움 부탁드립니다..


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+"a.sqlite"); //--폰에 위치할 경로

 

  InputStream is = null

     

  FileOutputStream fo = null;

   

  long filesize = 0;

         

       

  try {

    // --asset 폴더 및 복사할 DB 지정

  is = assetManager.open("a.sqlite", 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();

  }   

}



class ProductDBHelper extends SQLiteOpenHelper{


public ProductDBHelper(Context context) {

super(context, "a.sqlite", 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

}

}