전에 포스팅했던 내용에 이어서 SQLite를 다뤄볼 예정이다!
전 글에서는 SQLite에서 테이블을 만들고, insert하고, delete하고, select하는 구문을 작성했으면
이번 글에서는 view를 간단히 만들어보고 이 뷰에서 어떻게 활용할 수 있는지 다뤄볼 것이다!
먼저 위에 EditText에서 작성한 것을 insert버튼을 눌렀을 때 테이블에 들어가고,
GetAll 버튼을 눌렀을 때에는 resultArea에 테이블에 있던 값이 나오고,
DeleteAll을 했을 때에는 테이블의 전체 값을 삭제하는 것을 확인할 것이다.
insert구문
fun insert(str : String) {
val db = this.writableDatabase
val values = ContentValues().apply {
put(TITLE, str) //TITLE의 값에 str을 넣겠다.
}
db.insert(TBL_NAME, null, values)
}
getAllData구문(전체 select)
fun getAllData() : ArrayList<String> {
val db = this.readableDatabase
val query = "SELECT * FROM $TBL_NAME"
val cursor = db.rawQuery(query, null)
val arr = ArrayList<String>()
with(cursor) {
while (moveToNext()) {
arr.add(getString(1)) //값을 하나씩 넣어줌
//이는 ID값은 아니고, TITLE값을 의미함
}
}
return arr
}
delete구문(전체 delete)
fun deleteAll(){
val db = this.writableDatabase
db.execSQL("DELETE FROM $TBL_NAME")
}
class MainActivity : AppCompatActivity() {
lateinit var db : SQLiteHelperSample
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
db = SQLiteHelperSample(this)
이제 액티비티에서 위와 같이 localDB를 생성해주고,
val inputArea = findViewById<EditText>(R.id.inputArea)
val insertBtn = findViewById<Button>(R.id.insert)
insertBtn.setOnClickListener {
val inputText = inputArea.text.toString()
db.insert(inputText)
inputArea.setText("")
}
이렇게 값을 넣어
getAllBtn.setOnClickListener {
val arr = db.getAllData()
resultArea.text = arr.toString()
}
버튼을 클릭했을 때 잘 들어갔는지 확인해보자!
1234, 12345를 넣고, GETALL버튼을 클릭했는데, 다음과 같이 잘 나오는 것을 알 수 있다!
deleteBtn.setOnClickListener {
db.deleteAll()
}
delete버튼을 클릭하고 GETALL버튼을 클릭했을 때는 예상과 마찬가지로 테이블의 모든 행이 삭제된 것을 확인할 수 있다.
또한, 이는 하나의 데이터베이스기 때문에 앱을 종료했다가 켜도 기존에 있던 테이블의 값들 전체가 불러오지는것 또한 확인할 수 있었다!!
'Android > JETPACK' 카테고리의 다른 글
[JETPACK개론] ROOM(2) (0) | 2022.09.03 |
---|---|
[JETPACK개론] ROOM(1) (0) | 2022.09.02 |
[JETPACK개론] SQLite(1) (0) | 2022.08.29 |
[JETPACK개론] Retrofit + ViewModelScope + RV + Glide (0) | 2022.08.28 |
[JETPACK개론] Retrofit 예제 + RecyclerView (0) | 2022.08.27 |