Gooday Note Scrap Source Android login
 
작성일 : 11-04-16 01:58
assets 폴더에 DB올리고 apk로 Install시 문제
 글쓴이 : 기리
조회 : 4,823   추천 : 0   비추천 : 0  
   http://www.androidpub.com/870839 [1910]
package study.DBTEST;

import java.io.*;
import android.app.Activity;
import android.content.*;
import android.content.res.*;
import android.database.*;
import android.database.sqlite.*;
import android.os.Bundle;
import android.view.*;
import android.widget.*;

public class DBTEST extends Activity {
   EditText mText;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.start);   
        
  findViewById(R.id.btn_ac).setOnClickListener(mClickListener);
  findViewById(R.id.btn_ca).setOnClickListener(mClickListener);   
  
  DBUPLOAD();//DBUP
 
 
    }
    
    Button.OnClickListener mClickListener = new View.OnClickListener()
    {
  public void onClick(View v)
  {
   Intent intent = new Intent(DBTEST.this,ListQ.class);   
   Bundle Reg = new Bundle();  
     
 
   switch (v.getId())
   {
   case R.id.btn_ac:  
    Reg.putInt("SelectQ", 1);//A-C
       intent.putExtras(Reg);
    startActivity(intent);
   break;
   
   case R.id.btn_ca:
    Reg.putInt("SelectQ", 2);//C-A
       intent.putExtras(Reg);
    startActivity(intent);
    
   }
   
  }
  
    };
    
     public void DBUPLOAD()
    {
     AssetManager am =null;
  InputStream[] arrIs = new InputStream[1];
  BufferedInputStream[] arrBis = new BufferedInputStream[1];
  
  FileOutputStream fos = null;
  BufferedOutputStream bos = null; 
  
  try     
  { 
        
   File f = new File("/data/data/study.DBTEST/databases/timetables.db"); 
   if(f.exists())
   {
    f.delete();
    f.createNewFile();
   }
   am=this.getResources().getAssets();
   
   for(int i = 0; i < arrIs.length; i++) 
           
    {               
     arrIs[i] = am.open("dbs/timetables.db");                
     arrBis[i] = new BufferedInputStream(arrIs[i]); 
          
    } 
   fos = new FileOutputStream(f);    
   bos = new BufferedOutputStream(fos);
   
   int read = -1;          
   byte[] buffer = new byte[1024];         
    
          
   for(int i = 0; i < arrIs.length; i++) 
    {    
     while((read = arrBis[i].read(buffer, 0, 1024)) != -1) 
       {                  
        bos.write(buffer, 0, read); 
       }                               
     bos.flush();           
    }   
   }
  catch(Exception e){}      
    }
    
    
    
   
}

기리 11-04-16 01:58
 
apk파일 생성 후 실제로 스마트 폰에 apk파일을 넣고 인스톨을 하면
DB가 databases폴더로 복사가 되지 않는 듯 합니다.

혹시 제가 아래 코딩에서 보다 싶이 잘못 한 부분이 있나요>?

assets에 DB도 넣었구요..ㅠㅠ

에뮬에서는 잘 됩니다만... 

====================================================================

저장할 공간이 없어서 안써진다고 봅ㄴㅣ다.
"/data/data/study.DBTEST/databases/" 이 폴더가 존재하지 않을경우에 오류가 발생합니다.
프로그램 돌려서 catch(Exception e){ e.printStackTrace();}를 뿌려보세요

이부분을 추가하세요~  이렇게

File folder = new File("/data/data/study.DBTEST/databases/");
folder.mkdirs();

File f = new File("/data/data/study.DBTEST/databases/study.DBTEST");
  if (f.exists()) {
    f.delete();
    f.createNewFile();
  }