어떤 데이터가 있어서( 양이 엄청 크진 않아요 )
이 데이터를 디바이스 내에 DB 로 생성해두고, 원할 때 서버와 싱크로나이징을 하려고 하는데. ( 서버 DB는 가끔보다는 자주 자주 보다는 가끔 유동합니다 )
처음 어플 설치 시, .sql 파일로 서버 DB의 어느정도 부분을 내장시켜 두려고 하는데
어떻게 처리해야하는거죠 ㅠㅠ ?
( * 아마 내장 된다면 해당 어플의 PRIVATE directory에 담기게 하려고 합니다 )
( \data\data\application_name\files 겠죠? )
try {
File folder = new File("/data/data/te.st/databases/");
folder.mkdirs();
File outfile = new File("/data/data/te.st/databases/test.db");
outfile.createNewFile();
AssetManager assetManager = getResources().getAssets();
InputStream is;
is = assetManager.open( "databases/test.db", AssetManager.ACCESS_BUFFER);
long filesize = is.available();
// 패키지 폴더에 설치된 DB파일이 포함된 DB파일 보다 크기가 작을 경우 DB파일을 덮어 쓴다.
if(outfile.length() < filesize){
byte[] tempdata = new byte[(int) filesize];
is.read(tempdata);
is.close();
outfile.createNewFile();
FileOutputStream fo = new FileOutputStream(outfile);
fo.write(tempdata);
fo.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
.db확장자를 같는 sqlite의 파일을 패키지내 assets/databases에 넣고 카피하셔서 쓰면됩니다.




제가 잘 이해를 한건지 모르겠지만 sql파일이 어떤걸 말씀하시는지 모르겠찌만 DB스키마인지.. 디비 파일인지... 잘모르겠지만 일단 쓰신 내용을 제가 이해한대로 설명 드리면 서버쪽 db와 안드로이드쪽 디비를 sync하시겠다는 의미인것 같은데 굳이 sql말고 sqlite db 파일 만드시고 asset에 넣으신다음 프로그램에서 다시 저장소로 저장하게 해서 필요할때 바로 DB에 넣으면 될것 같습니다.