private DatabaseHelper mDbHelper;
 private class DatabaseHelper extends SQLiteOpenHelper{

  public DatabaseHelper(Context context) {
   super(context, DATABASE_NAME, null, DATABASE_VERSION);
  }
  
  public void onCreate(SQLiteDatabase db){
   Log.d("june" , "DATABASE_CREATE : ");
   db.execSQL(DATABASE_CREATE);
  }
  
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
   db.execSQL("DROP TABLE IF EXISTS data");
   onCreate(db);
  }
 }
 
 @Override
 public boolean onCreate() {
  // contentprovider 시작할때 databasehelper를 생성한다.
  mDbHelper = new DatabaseHelper(getContext());
  return true;
 }

 

contentprovider 를 extends 해서

프로바이더를 하나 만들었는데요

 

초기 컨텐츠 프로바이더를 불러오면

onCreate()  // contentprovider 시작할때 databasehelper를 생성한다.
바로 이부분을 타거든요..

근데 db가 안만들어져서 insert하면 no such table의 에러가 납니다.

그래서 oncreate에다가 mdbhelper oncreate를 넣어주어서 만들었습니다.

그러니깐 잘 들어가지더라구요.. 그래서 궁금해서

이번에는 다시 mdbhelper oncreate를 다시 빼고

 

위에 소스 그대로 다시 원상복귀하고 엡지우고 데이터도 지워서 완전히 클리어한상태에서

 

다시 에러났던 소스로 원복해서

초기 컨텐츠 프로바이더를 불러오면

onCreate() // contentprovider 시작할때 databasehelper를 생성한다. 요부분

no such table이 안나오고 잘 됩니다..

 

한마디로 궁금한게 초기에

강제적으로 contentprovider의 oncrate에서 databasehelper.oncreate 를 해줘야하나요?

아니면

contentprovider의 oncreate 처럼 그냥

위에소스처럼 DatabaseHelper 의 생성자만 설정해주면

 

db의 table이 만들어지는 건가요?? 감이 잘 안잡힙니다.. ㅠㅠ

 

profile