2016년 9월 9일 금요일

안드로이드 sqllite에서 테이블 필드추가는 어떻게 하는가? alter table add


안드로이드 sqllite에서 테이블 필드추가는 어떻게 하는가?

구글과 네이버 검색중에 어렵다, 안된다는 글이 많았지만, 어느 날 조회해보니 된다는 글  이 있어서 해보니 안드로이드 sqllite에서 create table 후 alter table add가 되었어요

예문)
package com.joysoft.dday.history;

import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase;
import android.content.Context;

/**
 * @author Sean Owen
 */
final class HistoryDBHelper extends SQLiteOpenHelper {

  private static final int DB_VERSION = 9;
  private static final String DB_NAME = "angel_dday_history.db";
  static final String TABLE_NAME = "dday";

  HistoryDBHelper(Context context) {
    super(context, DB_NAME, null, DB_VERSION);
  }

  @Override
  public void onCreate(SQLiteDatabase sqLiteDatabase) {
    sqLiteDatabase.execSQL(
      "CREATE TABLE " + TABLE_NAME + " (" +
      " enter_time TEXT PRIMARY KEY, " + /* 등록 일시 (timestamp) */
      " image_name TEXT, " + /* 썸네일 이미지명 */
      " dday_title TEXT, " + /* 디데이 타이틀 */
      " dday_ymd TEXT, " + /* 디데이 년월일 (2016/07/10)*/
      " dday_method TEXT, " + /* 디데이 계산방법 */
 " memo_ct TEXT, " + /* 간단메모 내용 */
 " addinfo1 TEXT, " + /* 즐겨찾기여부(Y, ???) */
 " addinfo2 TEXT, " + /* 등록(업데이트)일자 */
 " addinfo3 TEXT, " + /* 추가정보3 */
 " addinfo4 TEXT, " + /* 추가정보4 */
 " addinfo5 TEXT " + /* 추가정보5 */
      " );");
  }

  @Override
  public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
  int version = oldVersion;
 if (version != DB_VERSION && oldVersion<9) {
 sqLiteDatabase.execSQL("ALTER TABLE dday ADD bar_yn TEXT;");
 sqLiteDatabase.execSQL("ALTER TABLE dday ADD bar_type TEXT;");
          }
  }
}

핵심적인 부분이 버전에 대한 부분에 맞추어서 업데이트를 해주시면 돼요

create table에서 필드를 추가도 해보았지만, 에러가 나며 적용이 되지 않았는데, 필드의 추가는 alter table add의 예약어를 사용해야 적용이 된다

위의 소스를 참조하시어 개발하시면 되겠어요


즐거운 시간 보내세요~

댓글 없음:

댓글 쓰기