안드로이드 개발 질문/답변
(글 수 45,052)
package com.rotorl;
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream;
import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.res.AssetManager; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button;
public class RotorlActivity extends Activity {
/** Called when the activity is first created. */
Button Button01;
Button Button02;
Button Button03;
@Override
public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.main);
initialize(getApplicationContext());
try{
// 'data/data'에 생성된 db파일 읽어오기
SQLiteDatabase db = openOrCreateDatabase("animal.db", Context.MODE_PRIVATE, null);
// 쿼리로 db의 커서 획득
Cursor cur = db.rawQuery("SELECT * db", null);
// 처음 레코드로 이동
cur.moveToFirst();
// 읽은값 출력
//Log.i("move!!!",""+cur.getString(0));
// TextView tv = (TextView)findViewById(R.id.textView);
// tv.setText(cur.getString(0));
}catch(Exception e){
//Log.i("_)",""+e.toString());
}
}
public static final String PACKAGE_DIR = "/data/data/com.ratorl/";
public static final String DATABASE_NAME = "animal.db";
public static final String COPY2DATABASE_NAME = "animal2.db";
public static void initialize(Context ctx) {
// check
File folder = new File(PACKAGE_DIR + "databases");
folder.mkdirs();
File outfile = new File(PACKAGE_DIR + "databases/" + COPY2DATABASE_NAME);
if (outfile.length() <= 0) {
AssetManager assetManager = ctx.getResources().getAssets();
try {
InputStream is = assetManager.open(DATABASE_NAME, AssetManager.ACCESS_BUFFER);
long filesize = is.available();
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) {
e.printStackTrace();
}
}
}
}
코드 전문입니다. 아무리 검색을 해봐도 풀코드는 찾아볼수가 없고 일부 클래스나 코드만 복사붙여넣기하다보니 아무리 해도 답이 나오질 않네요 assets폴더에 animal.db를 넣어두고 다음의 코드를 실행해보면 data/data/com.rotorl/databases에 animal.db가 생기긴 하는데 원래의 디비랑은 이름만 같지 그냥 비어있는 db입니다. SQLite databasebrowser로 열어서 확인해보면 android_metadate라는 테이블만 빈채로 존재합니다. 원래의 db파일은 animal이라는 tabler과 sqlite_sequence라는 테이블로 이루어져 있습니다 ㅠㅠ 코드에서 뭘 고치면 되는지 알려주시거나 관련 예제를 알려주시면 정말 감사하겠습니다




코드를 봐도 잘 모르겠으나
Input 으로 받아오신다음 파일에 뭔가 쓰고 계신거 아닌가요