투케이2K

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

투케이2K 유틸파일

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

투케이2K 2023. 8. 12. 22:16

[설 명]

프로그램 : Android / Java

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

 

[소스 코드]

 

package com.example.javaproject;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

import org.json.JSONObject;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class S_SQLite extends SQLiteOpenHelper {


    /**
     * // --------------------------------------------------------------------------------------
     * 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 사용에 필요한 전역 변수 선언 부분]
    // -----------------------------------------------------------------------------------------
    public static final int DATABASE_VERSION = 1; // 데이터베이스 버전
    public static final String DATABASE_NAME = "S_SQLite.db"; // 데이터베이스 이름

    public static final String TABLE_NAME = "TWOK_TABLE"; // 테이블 이름
    //public static final String COLUMN_NAME_IDX = "MY_IDX"; // 컬럼 이름
    public static final String COLUMN_NAME_KEY = "TWOK_KEY"; // 컬럼 이름
    public static final String COLUMN_NAME_VALUE = "TWOK_VALUE"; // 컬럼 이름

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

    // 테이블 삭제 쿼리문
    private static final String SQL_DELETE_ENTRIES =
            "DROP TABLE IF EXISTS " + TABLE_NAME;





    // -----------------------------------------------------------------------------------------
    // TODO [SQLITE 클래스 생성자 초기화 및 메소드 재정의 실시]
    // -----------------------------------------------------------------------------------------
    public S_SQLite(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(SQL_CREATE_ENTRIES);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // 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
    public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        onUpgrade(db, oldVersion, newVersion);
    }





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

        // List Map 문자열 형식으로 저장된 전체 데이터 포맷
        ArrayList <Map> list = new ArrayList();

        try {

            SQLiteOpenHelper myDBHelper = new S_SQLite(context); // 데이터베이스 오픈
            SQLiteDatabase sqLiteDatabase = myDBHelper.getReadableDatabase(); // 데이터베이스 데이터 접근

            Cursor cursor = sqLiteDatabase.rawQuery(
                    "SELECT *  FROM " + String.valueOf(TABLE_NAME)
                            + " ORDER BY " + String.valueOf(COLUMN_NAME_KEY) + " ASC"
                    , null
            );
            while (cursor.moveToNext()){
                Map rawFormat = new HashMap();
                rawFormat.put("KEY", String.valueOf(cursor.getString(0))); // KEY 컬럼
                rawFormat.put("VALUE", String.valueOf(cursor.getString(1))); // VALUE 컬럼

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

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

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

    }





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

        String result = "";

        try {

            SQLiteOpenHelper myDBHelper = new S_SQLite(context); // 데이터베이스 오픈
            SQLiteDatabase sqLiteDatabase = myDBHelper.getReadableDatabase(); // 데이터베이스 데이터 접근

            Cursor cursor = sqLiteDatabase.rawQuery(
                    "SELECT *  FROM " + String.valueOf(TABLE_NAME)
                            + " WHERE " + String.valueOf(COLUMN_NAME_KEY) + " = ?"
                    , new String[] { key.trim() }
            );
            while (cursor.moveToNext()){
                result = String.valueOf(cursor.getString(1)); // VALUE 컬럼
            }
            cursor.close();
            sqLiteDatabase.close();

            // [로그 출력]
            S_Log._D_("SQLITE 특정 데이터 값 조회 실시", new String[]{
                    "INPUT [KEY] :: " + String.valueOf(key),
                    "RETURN [VALUE] :: " + String.valueOf(result)
            });

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

        return String.valueOf(result);
    }





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

        try {

            SQLiteOpenHelper myDBHelper = new S_SQLite(context); // 데이터베이스 오픈
            SQLiteDatabase sqLiteDatabase = myDBHelper.getWritableDatabase(); // 데이터베이스 데이터 접근

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

            // [로그 출력]
            S_Log._W_("SQLITE 테이블에 정보 삽입 실시", new String[]{
                    "INPUT [KEY] :: " + String.valueOf(key),
                    "INPUT [VALUE] :: " + String.valueOf(value)
            });

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

    }





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

        try {

            SQLiteOpenHelper myDBHelper = new S_SQLite(context); // 데이터베이스 오픈
            SQLiteDatabase sqLiteDatabase = myDBHelper.getWritableDatabase(); // 데이터베이스 데이터 접근

            sqLiteDatabase.execSQL(
                    "UPDATE " + String.valueOf(TABLE_NAME) + " " +
                            "SET " + String.valueOf(COLUMN_NAME_VALUE) + " = ? " + " " +
                            "WHERE " +String.valueOf(COLUMN_NAME_KEY)+ " = ? "
                    ,new String[] { String.valueOf(value.trim()) , key.trim() }
            );

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

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

    }





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

        try {

            SQLiteOpenHelper myDBHelper = new S_SQLite(context); // 데이터베이스 오픈
            SQLiteDatabase sqLiteDatabase = myDBHelper.getWritableDatabase(); // 데이터베이스 데이터 접근

            sqLiteDatabase.execSQL(
                    "DELETE FROM " + String.valueOf(TABLE_NAME)
            );

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

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

    }





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

        try {

            SQLiteOpenHelper myDBHelper = new S_SQLite(context); // 데이터베이스 오픈
            SQLiteDatabase sqLiteDatabase = myDBHelper.getWritableDatabase(); // 데이터베이스 데이터 접근

            sqLiteDatabase.execSQL(
                    "DELETE FROM " + String.valueOf(TABLE_NAME) + " " +
                            "WHERE " +String.valueOf(COLUMN_NAME_KEY)+ " = ? "
                    ,new String[] { String.valueOf(key).trim() }
            );

            // [로그 출력]
            S_Log._E_("SQLITE 테이블에 저장된 특정 정보 삭제 실시", new String[]{
                    "INPUT [KEY] :: " + String.valueOf(key)
            });

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

    }


} // TODO [클래스 종료]

 

반응형
Comments