마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

어플설치후 처음 실행할 때는 데이터를 못 가지고 옵니다.

0 추천
private void copyDB() {
		// TODO Auto-generated method stub
		String PACKAGE_DIR = "/data/data/app.smtit_yd/";
		String DATABASE_NAME = "TimeTable.db";
		
		File folder = new File(PACKAGE_DIR);
		if (folder.exists()){
			
		} else {
			folder.mkdirs();
		}
		
		AssetManager A_man = getResources().getAssets();
		File ofile = new File(PACKAGE_DIR + "databases/" + DATABASE_NAME);
		
		ofile.delete();
		
		InputStream in = null;
		FileOutputStream out = null;
		
		long filesize = 0;
		
		  try{
			   in = A_man.open(DATABASE_NAME,AssetManager.ACCESS_BUFFER);
			   filesize = in.available();
			   
			   if(ofile.length() <=0){
				   
			    byte[] tmpbyte = new byte[(int)filesize];
			    in.read(tmpbyte);
			    in.close();
			    ofile.createNewFile();
			    out = new FileOutputStream(ofile);
			    out.write(tmpbyte);
			    out.close();
			    
			   }else{
			    
			    System.out.println("DB있음!!!");
			   }
			  }catch(IOException e){
			   System.out.println("DB생성 오류 ["+e+"]");
			  }
		
	}

DB를 카피하는 코드입니다. 그런데 이게 apk를 뽑아서 설치 했을경우 완전 최초 설치 후 실행할 경우 DB를 못 뿌려줍니다.

그다음에 어플을 종료하고 그 다음에 실행시에는 DB를 뿌려주는데  왜 최초실행시에만 DB를 사용하지 못할까요?

모글리106 (140 포인트) 님이 2015년 3월 22일 질문

1개의 답변

0 추천
최초실행시 DB가 만들어져있지 않거나 만들어졌어도 데이터가 없어서 일겁니다.

 

안드로이드는 앱 처음 실행시 DB Create 하는데요. 그전에 CopyDB를 하셨거나 Data가 없어서 입니다.

 

그래서 2번째 실행시 DB가 생성되있는 상태에서 CopyDB는 정상 작동하는거구요.

 

create db 후. copydb를 한번 해보세요.
jo 님이 2015년 3월 24일 답변
...