안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요. 제가 SQLite를 사용해 DB 내부에 있는 내용을 보여주는 앱을 만들고 있습니다. 그런데 해결이 안되는 부분이 있어서 이렇게 문의를 드립니다.
다음과 같이 데이터베이스를 생성하는 코드를 짰습니다. 그리고 구동부에서 이 데이터베이스를 열려고 하는데요.
package ropas.android;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DictionaryDb extends SQLiteOpenHelper{
public static final String DB_NAME = "dictionary.db";
public static final int DB_VERSION = 1;
public static final String TABLE_NAME = "dictionary";
public static final String ID = "_id";
public static final String VOCA = "voca";
public static final String BODY = "body";
public static final String TAG = "DictionaryDb";
DictionaryDb(Context c) {
super(c, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE" + TABLE_NAME + "(_id INTEGER PRIMARY KEY AUTOINCREMENT," + VOCA + "text not null," + BODY + "text not null);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "version mismatch : " + oldVersion + "to" + newVersion);
db.execSQL("DROP TABLE" + TABLE_NAME);
onCreate(db);
}
다음과 같이 데이터베이스를 생성하는 코드를 짰습니다. 그리고 구동부에서 이 데이터베이스를 열려고 하는데요.
private DictionaryDb mDbHelper;
private SQLiteDatabase sdb;
mDbHelper = new DictionaryDb(this);
sdb = mDbHelper.getReadableDatabase();
sdb에 getReadableDatabase()로 db를 여는 시점에서 error가 발생합니다. 컴파일 에러가 아니라 컴파일은 잘되서 에뮬레이터에까지 잘 올라가는데 앱이 실행되려는 순간 unexpectly close라고 뜨면서 앱이 종료가 됩니다. 주석 처리를 하면서 디버깅을 해보니까 sdb = mDbHelper.getReadableDatabase(); 가 실행되는 순간 에러가 발생하는 건 확실히 확인을 했습니다. 제가 sqlite를 이번에 처음 써보는 것이라 웹의 예제들을 많이 참고해가며 했는데 아무리 비교해봐도 뭐가 문제가 되는지 모르겠습니다. 문제가 되는 부분을 좀 알려주시면 감사하겠습니다.