/FC_ADS_8.DB

sqlite를 사용하여 DB의 CRUD를 구현하였습니다.

Primary LanguageJava

FC_ADS_8.DB

패스트캠퍼스 안드로이드 스튜디오 프로젝트 8. 데이터베이스

  • 테이블 내용을 담고있는 Bbs클래스

@DatabaseTable(tableName = "bbs")
public class Bbs {

    @DatabaseField(generatedId = true)
    private int id;

    @DatabaseField
    private String title;

    @DatabaseField
    private String content;

    @DatabaseField
    private Date currentDate;

    public String getContent() {
        return content;
    }

    public Date getCurrentDate() {
        return currentDate;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public void setCurrentDate(Date currentDate) {
        this.currentDate = currentDate;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public int getId() {
        return id;
    }

    public String getTitle() {
        return title;
    }

    // ormlite는 디폴트 생성자를 하나 가지고있어야한다
    // 이게 없으면 ormlite가 동작하지 않는다.
    Bbs() {

    }
    public Bbs(String title, String content, Date currentDate) {
        this.title = title;
        this.content = content;
        this.currentDate = currentDate;
    }
}


  • DB helper 구성

public class DBHelper extends OrmLiteSqliteOpenHelper {

    public static final String DB_NAME = "database.db";
    public static final int DB_VERSION = 1;

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

    /**
     * 생성자에서 호출되는 super(context... 에서 database.db 파일이 생성되어 있지 않으면 호출된다
     * 즉 여기에는 모든 데이터 테이블이 들어가있어야한다.
     * @param database
     * @param connectionSource
     */
    @Override
    public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {
        try{
            // Bbs.class 파일에 정의된 테이블을 생성한다.
            TableUtils.createTable(connectionSource, Bbs.class);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    /**
     * 이전 버전을 갖고 있는 사람이 새 버전으로 업데이트 할때 호출된다.
     * 예를들면 버전 1때는 아무것도 들어가있지 않아도 되며
     * 버전 2때는 버전 2에서 추가된 테이블만 들어간다.
     * 자세한 사용예시는 내 깃헙에서 project - Memoappp 을 확인해보자
     * @param database
     * @param connectionSource
     * @param oldVersion
     * @param newVersion
     */
    @Override
    public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) {
        try{
            // Bbs.class 에서 정의된 테이블을 삭제
            TableUtils.dropTable(connectionSource, Bbs.class, false);
            // 데이터를 보존해야 될 필요성이 있으면 중간처리를 해줘야만 한다.
            // TODO : 임시테이블을 생성한 후 데이터를 먼저 저장하고 onCreate 이후에 데이터를 입력해준다.
            // onCreate를 호출해서 테이블을 다시 생성한다.
            onCreate(database, connectionSource);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private Dao<Bbs, Long> bbsDao = null;
    // Dao 객체를 통해서
    // Long은 키값이고 Bbs는 자료이다.
    public Dao<Bbs, Long> getBbsDao() throws SQLException {
        if(bbsDao != null) {
            return bbsDao;
        }
        bbsDao = getDao(Bbs.class);
        return bbsDao;
    }

    // 메모리에서 null 시켜주는게 보통 release 함수들의 역할이다.
    public void releaseBbsDao() {
        if (bbsDao != null) {
            bbsDao = null;
        }
    }
}