sqlite

Programming/안드로이드 2018.09.29 01:03 Posted by 파란크리스마스

출처

DBManager.java

package com.bluexmas.common;

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

public class DBManager extends SQLiteOpenHelper {

    private static String TAG = DBManager.class.getName();

    // Database 버전
    public static final int DB_VERSION = 12;
    // Database 이름 (SQLite 파일명)
    public static final String DB_NAME = "bluexmas.db";

    // DBManager 객체 - 한번만 객체가 생성되도록 static 으로 변수 선언 : singleton 패턴
    private static DBManager instance = null;

    private Context context;

    // private 생성자 : singleton 패턴
    private DBManager(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
        this.context = context;
    }

    // DBManager 객체 반환 : singleton 패턴
    public static DBManager getInstance(Context context) {
        if (instance == null)
            instance = new DBManager(context);
        return instance;
    }

    public Context getContext() {
        return this.context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // 테이블 생성 관련 SQL 스크립트 실행
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // DB_VERSION 버전이 올라 가면 변경될 SQL 스크립트 실행
    }
}

VideoEntity.java

package com.bluexmas.common;

public class VideoEntity {

    public static final String TABLE_NAME = "video_info";

    public static final String COLUMN_NAME_MEDIA_ID = "v_id";
    public static final String COLUMN_NAME_TYPECODE = "type_code";
    public static final String COLUMN_NAME_FILEPATH = "path";
    public static final String COLUMN_NAME_REGDATE = "regdate";

    public String getTableName() {
        return TABLE_NAME;
    }

    public String genCreateSQL() {
        return "CREATE TABLE "+this.getTableName()+"( "
                + COLUMN_NAME_MEDIA_ID+" INTEGER PRIMARY KEY AUTOINCREMENT, "
                + COLUMN_NAME_TYPECODE+" CHAR(2) NOT NULL, "
                + COLUMN_NAME_FILEPATH+" TEXT NOT NULL, "
                + COLUMN_NAME_REGDATE+" TEXT NOT NULL "
                + ");";
    }
}

DBManager.java

package com.bluexmas.common;

public class DBManager extends SQLiteOpenHelper {

    //
    private static String TAG = DBManager.class.getName();

    // Database 버전
    public static final int DB_VERSION = 12;
    // Database 이름 (SQLite 파일명)
    public static final String DB_NAME = "bluexmas.db";

    // DBManager 객체 - 한번만 객체가 생성되도록 static 으로 변수 선언 : singleton 패턴
    private static DBManager instance = null;

    private Context context;

    private VideoEntity videoEntity = null;

    // private 생성자 : singleton 패턴
    private DBManager(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
        this.context = context;

        // VideoEntity 생체 생성
        this.videoEntity = new VideoEntity();
    }

    // DBManager 객체 반환 : singleton 패턴
    public static DBManager getInstance(Context context) {
        if (instance == null)
            instance = new DBManager(context);
        return instance;
    }

    public Context getContext() {
        return context;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // 테이블 생성 관련 SQL 스크립트 실행

        // VideoEntity 테이블 생성
        db.execSQL(this.videoEntity.genCreateSQL());
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // DB_VERSION 버전이 올라 가면 변경될 SQL 스크립트 실행
    }

    // 비디오 정보 추가 (레코드 추가)
    public int addVideo(String type_code, String path) {
        if (path == null)
            return;

        // DB 객체 가져오기
        SQLiteDatabase db = this.getWritableDatabase();

        //
        ContentValues values = new ContentValues();
        values.put(this.videoEntity.COLUMN_NAME_TYPECODE, type_code);
        values.put(this.videoEntity.COLUMN_NAME_FILEPATH, path);
        values.put(this.videoEntity.COLUMN_NAME_REGDATE, "-");

        // 데이터 삽입
        long newRowId = db.insert(this.videoEntity.getTableName(), null, values);

        return getLastID(this.videoEntity.getTableName());
    }

    /**
     * 마지막 추가한 ID 구하기
     * @param table_name 테이블 이름
     * @return ID
     */
    public int getLastID(String table_name) {
        // DB 객체 가져오기
        SQLiteDatabase db = this.getWritableDatabase();

        final String query = "SELECT last_insert_rowid() FROM "+ table_name;
        Cursor cur = db.rawQuery(query, null);
        cur.moveToFirst();
        int last_id = cur.getInt(0);
        cur.close();
        return last_id;
    }
}



-