안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요
SQLite browser를 써서 db 파일 하나를 만들었어요
그 파일 이름은 book_list_100.db입니다
이걸 불러와서 listView로 뿌리는 페이지 하나를 만들려고 하고 있어요
구글을 열심히 검색해보니 실제로 어렵지 않더라구요. 근데...막상 하니..-_- 안되네요..ㅠ
package com.SNUAPP.Book;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import java.util.*;
import android.widget.*;
import android.database.*;
import android.database.sqlite.*;
public class SNUAPP_Book extends Activity {
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Cursor cursor;
SQLiteDatabase db;
db = this.openOrCreateDatabase("book_list_100.db", Context.MODE_PRIVATE, null);
<-이 라인까지만 되고 다음 라인부터 추가하면 안되더라구요.
/*cursor = db.rawQuery("SELECT * FROM book_list WHERE category = 'ko_li'", null);
startManagingCursor(cursor);
SimpleCursorAdapter Adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2, cursor, new String[]{"book_name", "book_author"}, new int[]{android.R.id.text1, android.R.id.text2});
ListView list = (ListView)findViewById(R.id.marked_book);
list.setAdapter(Adapter);*/
}
}
이클립스에서 에러메세지가 뜨는게 아니라 에뮬레이터에서 에러메세지가 뜨면서 강제 종료가 되더라구요.
쿼리가 잘못된건가 해서 SQLite Browser에서 돌려보니 잘되구요..
대체 어디가 문제인건가요?
book_list_100.db파일은
C:\Documents and Settings\Kim\workspace\SNU_Book\assets 이랑
C:\Documents and Settings\Kim\workspace\SNU_Book\assets\data\data\SNU_book\database
에 들어있습니다. 대체 어디에 넣어야 하는건지 몰라서..ㅠ
김백수 입니다. 백수네요.
2011.01.15 09:42:31
현재 적어주신 코드로는 assets에 있는 DB에 접근하지 못합니다. 매번 텅빈 db파일을 읽어오고있기 때문에 커서에서 오류가 납니다. assets에 있는 DB를 직접 읽어들이거나 SD카드로 복사를 한 다음에 DB를 열도록 하시면 됩니다.
2011.01.15 20:42:30
어플에서 자신의 DB기본 경로는 data\data\패키지경로\databases 입니다.
db = this.openOrCreateDatabase("book_list_100.db", Context.MODE_PRIVATE, null);
이렇게 명령어를 쓰면 data\data\패키지경로\databases에 book_list_100.db라는 파일이
있으면 그 파일을 열고, 없을경우 book_list_100.db라는 파일을 새로 생성하게 됩니다.
이 경로는 핸드폰 메모리상의 경로이고
C:\Documents and Settings\Kim\workspace\SNU_Book\assets\data\data\SNU_book\database
위와같이 컴퓨터의 경로랑은 전혀 다릅니다.
db파일을 내장해야 되는 경우, 보통 어플 시작시에 db파일을 체크한 후
파일이 없을경우(최초시작) 파일을 복사하게 합니다.
db = this.openOrCreateDatabase("book_list_100.db", Context.MODE_PRIVATE, null);
이렇게 명령어를 쓰면 data\data\패키지경로\databases에 book_list_100.db라는 파일이
있으면 그 파일을 열고, 없을경우 book_list_100.db라는 파일을 새로 생성하게 됩니다.
이 경로는 핸드폰 메모리상의 경로이고
C:\Documents and Settings\Kim\workspace\SNU_Book\assets\data\data\SNU_book\database
위와같이 컴퓨터의 경로랑은 전혀 다릅니다.
db파일을 내장해야 되는 경우, 보통 어플 시작시에 db파일을 체크한 후
파일이 없을경우(최초시작) 파일을 복사하게 합니다.



