투케이2K

116. (TWOK/UTIL) [Android/kotlin] S_SQLite - SQLite DB 앱 데이터 베이스 select , insert , update , delete 본문

투케이2K 유틸파일

116. (TWOK/UTIL) [Android/kotlin] S_SQLite - SQLite DB 앱 데이터 베이스 select , insert , update , delete

투케이2K 2023. 8. 11. 22:44

[설 명]

프로그램 : Android / Kotlin

설 명 : S_SQLite - SQLite DB 앱 데이터 베이스 select , insert , update , delete

 

[소스 코드]

 

package com.example.kotlinproject

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


class S_SQLite (context: Context?) : SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) {


    /**
     * // --------------------------------------------------------------------------------------
     * TODO [클래스 설명]
     * // --------------------------------------------------------------------------------------
     * 1. 모바일 내부 데이터 저장 수행 클래스 (앱 종료 시에도 유지 / 앱 삭제 시 초기화)
     * // --------------------------------------------------------------------------------------
     */





    /**
     * // --------------------------------------------------------------------------------------
     * // TODO [빠른 로직 찾기 : 주석 로직 찾기]
     * // --------------------------------------------------------------------------------------
     * // [SEARCH FAST] : getSelectAll : SQLITE 저장된 테이블 전체 목록 조회 실시 SELECT * FROM
     * // --------------------------------------------------------------------------------------
     * // [SEARCH FAST] : getSelectKey : SQLITE 특정 데이터 값 조회 실시 - SELECT EQUALS
     * // --------------------------------------------------------------------------------------
     * // [SEARCH FAST] : setInsert : SQLITE 테이블에 정보 삽입 실시 - INSERT
     * // --------------------------------------------------------------------------------------
     * // [SEARCH FAST] : setUpdateKey : SQLITE 테이블에 저장된 특정 정보 업데이트 실시 - UPDATE EQUALS
     * // --------------------------------------------------------------------------------------
     * // [SEARCH FAST] : getDeleteAll : SQLITE 테이블에 저장된 전체 정보 삭제 실시 - DELETE
     * // --------------------------------------------------------------------------------------
     * // [SEARCH FAST] : getDeleteKey : SQLITE 테이블에 저장된 특정 정보 삭제 실시 - DELETE EQUALS
     * // --------------------------------------------------------------------------------------
     *
     * // --------------------------------------------------------------------------------------
     *
     * // --------------------------------------------------------------------------------------
     *
     * // --------------------------------------------------------------------------------------
     *
     * // --------------------------------------------------------------------------------------
     */





    /**
     * // --------------------------------------------------------------------------------------
     * TODO [사용 방법 정의]
     * // --------------------------------------------------------------------------------------
     * S_SQLite.getSelectAll(A_Activity@this) // TODO 전체 목록 조회
     * S_SQLite.getSelectKey(A_Activity@this, "name") // TODO 특정 KEY 조회
     * // --------------------------------------------------------------------------------------
     * S_SQLite.setInsert(A_Activity@this, "name", "투케이") // TODO 데이터 삽입
     * // --------------------------------------------------------------------------------------
     * S_SQLite.setUpdateKey(A_Activity@this, "name", "TWOK") // TODO 특정 데이터 업데이트
     * // --------------------------------------------------------------------------------------
     * S_SQLite.getDeleteAll(A_Activity@this) // TODO 전체 데이터 삭제
     * S_SQLite.getDeleteKey(A_Activity@this, "name") // TODO 특정 데이터 삭제
     * // --------------------------------------------------------------------------------------
     */





    /**
     * // --------------------------------------------------------------------------------------
     * TODO [SQL LITE 테이블 (MY_TABLE) 구조 설명]
     * // --------------------------------------------------------------------------------------
     * [MY_KEY]   |    [MY_VALUE]
     * // --------------------------------------------------------------------------------------
     * name       |      TWOK
     * age        |        28
     * sex        |         M
     * // --------------------------------------------------------------------------------------
     */





    // -----------------------------------------------------------------------------------------
    // TODO [SQLITE 클래스 생성자 초기화 및 메소드 재정의 실시]
    // -----------------------------------------------------------------------------------------
    override fun onCreate(db: SQLiteDatabase) {
        db.execSQL(SQL_CREATE_ENTRIES)
    }

    override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
        // This database is only a cache for online data, so its upgrade policy is
        // to simply to discard the data and start over
        db.execSQL(SQL_DELETE_ENTRIES)
        onCreate(db)
    }

    override fun onDowngrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
        onUpgrade(db, oldVersion, newVersion)
    }





    // -----------------------------------------------------------------------------------------
    // TODO [SQLITE 사용에 필요한 전역 변수 선언 부분]
    // -----------------------------------------------------------------------------------------
    companion object {

        val DATABASE_VERSION = 1 // 데이터베이스 버전
        val DATABASE_NAME = "S_SQLite.db" // 데이터베이스 이름
        val TABLE_NAME = "TWOK_TABLE" // 테이블 이름

        //public static final String COLUMN_NAME_IDX = "MY_IDX"; // 컬럼 이름
        val COLUMN_NAME_KEY = "TWOK_KEY" // 컬럼 이름
        val COLUMN_NAME_VALUE = "TWOK_VALUE" // 컬럼 이름

        // 테이블 생성 쿼리문
        private val SQL_CREATE_ENTRIES =
            "CREATE TABLE " + TABLE_NAME + " (" +
                    //COLUMN_NAME_IDX + " INTEGER," +
                    COLUMN_NAME_KEY + " TEXT," +
                    COLUMN_NAME_VALUE + " TEXT)"

        // 테이블 삭제 쿼리문
        private val SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS " + TABLE_NAME





        // -----------------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : getSelectAll : SQLITE 저장된 테이블 전체 목록 조회 실시 SELECT * FROM
        // -----------------------------------------------------------------------------------------
        fun getSelectAll(context: Context) {

            // List Map 문자열 형식으로 저장된 전체 데이터 포맷
            val list: ArrayList<Map<String, Any>> = ArrayList<Map<String, Any>>()

            try {
                val myDBHelper: SQLiteOpenHelper = S_SQLite(context) // 데이터베이스 오픈
                val sqLiteDatabase = myDBHelper.readableDatabase // 데이터베이스 데이터 접근
                val cursor = sqLiteDatabase.rawQuery(
                    "SELECT *  FROM " + TABLE_NAME + " ORDER BY " + COLUMN_NAME_KEY + " ASC", null
                )
                while (cursor.moveToNext()) {
                    val rawFormat: MutableMap<String, Any> = HashMap<String, Any>()
                    rawFormat["KEY"] = cursor.getString(0).toString() // KEY 컬럼
                    rawFormat["VALUE"] = cursor.getString(1).toString() // VALUE 컬럼

                    // 리턴 결과 배열에 삽입 실시
                    list.add(rawFormat)
                }
                cursor.close()
                sqLiteDatabase.close()

                // [로그 출력]
                S_Log._D_("SQLITE 저장된 테이블 전체 목록 조회 실시", arrayOf(list.toString()))

            } catch (e: Exception) {
                e.printStackTrace()
            }

        }





        // -----------------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : getSelectKey : SQLITE 특정 데이터 값 조회 실시 - SELECT EQUALS
        // -----------------------------------------------------------------------------------------
        fun getSelectKey(context: Context, key: String): String {

            var result = ""

            try {

                val myDBHelper: SQLiteOpenHelper = S_SQLite(context) // 데이터베이스 오픈
                val sqLiteDatabase = myDBHelper.readableDatabase // 데이터베이스 데이터 접근

                val cursor = sqLiteDatabase.rawQuery(
                    "SELECT *  FROM " + TABLE_NAME + " WHERE " + COLUMN_NAME_KEY + " = ?",
                    arrayOf(key.trim { it <= ' ' })
                )
                while (cursor.moveToNext()) {
                    result = cursor.getString(1).toString() // VALUE 컬럼
                }
                cursor.close()
                sqLiteDatabase.close()

                // [로그 출력]
                S_Log._D_("SQLITE 특정 데이터 값 조회 실시", arrayOf(
                    "INPUT [KEY] :: $key",
                    "RETURN [VALUE] :: $result"
                ))

            } catch (e: Exception) {
                e.printStackTrace()
            }
            return result

        }





        // -----------------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : setInsert : SQLITE 테이블에 정보 삽입 실시 - INSERT
        // -----------------------------------------------------------------------------------------
        fun setInsert(context: Context, key: String, value: String) {

            try {

                val myDBHelper: SQLiteOpenHelper = S_SQLite(context) // 데이터베이스 오픈
                val sqLiteDatabase = myDBHelper.writableDatabase // 데이터베이스 데이터 접근

                sqLiteDatabase.execSQL(
                    "INSERT INTO " + TABLE_NAME + " VALUES " +
                            "('" + key + "' , '" + value + "')"
                )

                // [로그 출력]
                S_Log._W_("SQLITE 테이블에 정보 삽입 실시", arrayOf(
                    "INPUT [KEY] :: $key",
                    "INPUT [VALUE] :: $value"
                ))

            } catch (e: Exception) {
                e.printStackTrace()
            }

        }





        // -----------------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : setUpdateKey : SQLITE 테이블에 저장된 특정 정보 업데이트 실시 - UPDATE EQUALS
        // -----------------------------------------------------------------------------------------
        fun setUpdateKey(context: Context, key: String, value: String) {

            try {

                val myDBHelper: SQLiteOpenHelper = S_SQLite(context) // 데이터베이스 오픈
                val sqLiteDatabase = myDBHelper.writableDatabase // 데이터베이스 데이터 접근

                sqLiteDatabase.execSQL(
                    ("UPDATE " + TABLE_NAME + " " +
                            "SET " + COLUMN_NAME_VALUE + " = ? " + " " +
                            "WHERE " + COLUMN_NAME_KEY + " = ? "),
                    arrayOf(value.trim { it <= ' ' }, key.trim { it <= ' ' })
                )

                // [로그 출력]
                S_Log._W_("SQLITE 테이블에 저장된 특정 정보 업데이트 실시", arrayOf(
                    "INPUT [KEY] :: $key",
                    "INPUT [VALUE] :: $value"
                ))

            } catch (e: Exception) {
                e.printStackTrace()
            }

        }





        // -----------------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : getDeleteAll : SQLITE 테이블에 저장된 전체 정보 삭제 실시 - DELETE
        // -----------------------------------------------------------------------------------------
        fun getDeleteAll(context: Context) {

            try {

                val myDBHelper: SQLiteOpenHelper = S_SQLite(context) // 데이터베이스 오픈
                val sqLiteDatabase = myDBHelper.writableDatabase // 데이터베이스 데이터 접근

                sqLiteDatabase.execSQL(
                    "DELETE FROM " + TABLE_NAME
                )

                // [로그 출력]
                S_Log._E_("SQLITE 테이블에 저장된 전체 정보 삭제 실시", null)

            } catch (e: Exception) {
                e.printStackTrace()
            }

        }





        // -----------------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : getDeleteKey : SQLITE 테이블에 저장된 특정 정보 삭제 실시 - DELETE EQUALS
        // -----------------------------------------------------------------------------------------
        fun getDeleteKey(context: Context, key: String) {

            try {

                val myDBHelper: SQLiteOpenHelper = S_SQLite(context) // 데이터베이스 오픈
                val sqLiteDatabase = myDBHelper.writableDatabase // 데이터베이스 데이터 접근

                sqLiteDatabase.execSQL(
                    ("DELETE FROM " + TABLE_NAME + " " +
                            "WHERE " + COLUMN_NAME_KEY + " = ? "), arrayOf(key.trim { it <= ' ' })
                )

                // [로그 출력]
                S_Log._E_("SQLITE 테이블에 저장된 특정 정보 삭제 실시", arrayOf(
                    "INPUT [KEY] :: $key"
                ))

            } catch (e: Exception) {
                e.printStackTrace()
            }

        }
    }


} // TODO [클래스 종료]

 

반응형
Comments