Notice
Recent Posts
Recent Comments
Link
투케이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 [클래스 종료]
반응형
'투케이2K 유틸파일' 카테고리의 다른 글
Comments