안드로이드 개발 질문/답변
(글 수 45,052)
apk파일 생성 후 실제로 스마트 폰에 apk파일을 넣고 인스톨을 하면
DB가 databases폴더로 복사가 되지 않는 듯 합니다.
혹시 제가 아래 코딩에서 보다 싶이 잘못 한 부분이 있나요>?
![]()
assets에 DB도 넣었구요..ㅠㅠ
에뮬에서는 잘 됩니다만...
DB가 databases폴더로 복사가 되지 않는 듯 합니다.
혹시 제가 아래 코딩에서 보다 싶이 잘못 한 부분이 있나요>?
assets에 DB도 넣었구요..ㅠㅠ
에뮬에서는 잘 됩니다만...
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){}
}
}



저장할 공간이 없어서 안써진다고 봅ㄴㅣ다.
"/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();
}