티스토리 뷰
데이터 베이스는 데이터를 저장하는 곳을 말합니다.
데이터를 저장하는 방식에는 RDB(Relational Database) 방식 및 키-밸류(Key-Value) 방식이 있습니다.
관계형 데이터 베이스라고 일컫는 RDB 방식은 엑셀 형태처럼 데이터를 저장하며, 행과 열로 데이터를 찾을 수 있습니다.
RDB 형태의 데이터를 관리하는 툴을 RDBMS(Relational Database Management System)이라고 합니다.
이러한 툴에는 MySQL, Oracle, PostreSQL 등이 있습니다. RDBMS에서 사용되는 데이터 베이스용 언어를 SQL 언어라고 부릅니다.
키-밸류 방식의 데이터 베이스는 'Not Only SQL'의 약자인 NoSQL 언어로 이루어져 있습니다.
NoSQL의 종류와 툴로는 다음이 존재합니다.
1. 키-밸류 값을 저장하는 방식: Memcached, Redis 등
2. XML, JSON 등으로 저장. 문서 저장에 특화됨: MongoDB
3. 데이터를 컬럼(열) 단위로 저장하고 관리: Cassandra, Hbase 등
4. 노드, 관계, 속성, 이 3가지 요소로 노드 간의 관계를 표현하는 그래프 형태로 저장: Neo4j 등
안드로이드는 기본적으로 RDB의 일종인 SQLite 데이터 베이스를 기본적으로 지원합니다.
개발자들은 유저들의 앱에 관한 성향(로그인, 모드, 정렬 등)에 대한 데이터를 저장하는 기본적인 저장소는 키-밸류 방식인 SharedPreference를 자주 사용합니다.
물론 방대한 자료구조로 SharedPreference를 사용하진 않으나, 심플한 값을 저장하는 데에는 사용에 무리가 없습니다.
SharedPreference를 이용해서 안드로이드 앱에서 데이터를 어떻게 저장하고 관리하는지 알아봅니다.
먼저 아래의 코드를 확인합니다.
class SharedPreferenceActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_shared_preference)
val sharedPreference = getSharedPreferences("Test1", Context.MODE_PRIVATE)
val editor: SharedPreferences.Editor = sharedPreference.edit()
editor.putString("Hi", "안녕하세요")
editor.commit()
}
}
위의 코드처럼, 액티비티를 만들고 onCreate 부분에서 SharedPreference를 바로 이용할 수 있습니다.
getSharedPreferences를 불러와, 인자로는 구분지어줄 명칭과, Mode를 필요한 넣어줍니다.
모드에는 다음의 종류가 있습니다. 자주 사용되는 모든 Mode_Private입니다.
Mode | |
MODE_PRIVATE | 생성한 앱에서만 사용 가능한 모드 |
MODE_WORLD_READABLE | 다른 앱에서도 사용 가능하며, 읽기만 가능 (카카오톡, 카카오페이 등 서로 공유가 필요할 경우) |
MODE_WORLD_WRITABLE | 다른 앱에서도 사용 가능하며, 읽고 기록하는게 모두 가능 |
MODE_MULTI_PROCESS | 이미 호출되어 사용중인지 체크함 |
MODE_APPEND | 기존 것에 신규로 추가하는 경우 |
SharedPreference가 생성되면, 데이터를 넣어주면 됩니다.
SharedPreference로부터 editor를 가져와서 원하는 데이터를 editor에 담아주면 됩니다. 아래 코드처럼, editor 변수에 sharedPreference.edit()를 담아주고, editor에 putString을 통해서 데이터를 키-밸류 형식으로 담습니다. 데이터를 담은 후에는 commit( )을 해줘야만 데이터가 반영돱니다.
val sharedPreference = getSharedPreferences("Test2", Context.MODE_PRIVATE)
val editor: SharedPreferences.Editor = sharedPreference.edit()
editor.putString("firstData", "첫번째 데이터 값입니다.")
editor.putString("secondData", "두번째 데이터 값입니다.")
editor.commit()
데이터를 가져올 때는 다음과 같이 가져옵니다. 가져올 경우에는 getString 메소드를 사용하며, 키 값을 통해서 꺼내옵니다. 두 번째 인자는 디폴트 값인데, 꺼내오려는 값이 없는 경우 넣는 값으로 No Data로 설정하였습니다.
val testValue = sharedPreference.getString("firstData", "No Data")
Log.d(testValue)
데이터를 일부분을 지우는 경우에는 remove 메소드를 사용합니다. remove 메소드 안에 키값을 넣고 commit 해주면 해당 데이터는 사라집니다.
val sharedPreference = getSharedPreferences("Test2", Context.MODE_PRIVATE)
val editor: SharedPreferences.Editor = sharedPreference.edit()
editor.remove("firstData")
editor.commit()
모든 데이터를 지우는 경우에는 clear 메소드를 사용하고 commit 해주면 됩니다. 아래 코드처럼, 이렇게 작성하면, firstData와 secondData가 모두 지워집니다.
val sharedPreference = getSharedPreferences("Test2", Context.MODE_PRIVATE)
val editor: SharedPreferences.Editor = sharedPreference.edit()
editor.clear()
editor.commit()
UI를 통해서 앱에서 데이터를 지우려면, 설정 부분에서 해당 앱을 클릭한 뒤, 저장 공간에서 데이터나 캐시를 삭제하면 됩니다.
'Android App Coding' 카테고리의 다른 글
비동기 방식 Async (0) | 2021.07.10 |
---|---|
안드로이드 데이터베이스(DB) 2편 Realm (0) | 2021.07.10 |
탭레이아웃 2편 TabLayout (0) | 2021.07.09 |
탭레이아웃 TabLayout (0) | 2021.07.09 |
리사이클러뷰 RecyclerView (0) | 2021.07.09 |
- Total
- Today
- Yesterday
- 인텐트
- android adapter
- 2007년 사건사고
- 안드로이드 프로젝트
- 메소드 오버라이딩
- 리사이클러뷰
- 애드뷰
- 안드로이드 스튜디오 에러
- 안드로이드 어댑터
- Bmi Calculator
- view binding
- 상대적 레이아웃
- 2019년 사건사고
- 안드로이드 앱 만들기
- RecyclerView
- ToDo List 앱 만들기
- 뷰 바인딩
- 리스트뷰
- addView
- notifyDataSetChanged
- tabLayout
- findViewById
- 자바스크립트 배열
- 대한민국 미제사건
- bmi 계산기 만들기
- 탭레이아웃
- 미제사건
- 선형 레이아웃
- 2021년 사건사고
- lazy init
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |