1. 제공되는 클래스
- 안드로이드는 SQLite를 사용할 때 표준 SQL 쿼리문 사용 대신 사용할 수 있는 클래스를 제공하고 있다.
- 클래스를 이용하는 방법 OR SQL문을 사용하는 방법 중 편한 방법을 사용한다.
1. INSERT
// 5. DB 오픈
var helper = DBHelper(this)
var db = helper.writableDatabase
// 1. 클래스를 이용하는 방법 - INSERT
var sdf = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault())
var date = sdf.format(Date())
// (textData, intData, floatData, dataData) values (?, ?, ?, ?) -> 1:1 배치를 함수로 표현.
var cv1 = ContentValues()
cv1.put("textData", "문자열1")
cv1.put("intData", 100)
cv1.put("floatData", 11.11)
cv1.put("dateData", date)
var cv2 = ContentValues()
cv2.put("textData", "문자열2")
cv2.put("intData", 200)
cv2.put("floatData", 22.22)
cv2.put("dateData", date)
db.insert("TestTable", null, cv1)
db.insert("TestTable", null, cv2)
db.close()
textView.text = "저장 완료"
2. SELECT
- db.query(테이블 이름 , 가져올 컬럼 이름의 문자열 배열, 조건절(값이 들어가는 부분은 ?로 작성. a=? and b=?), 조건절에 세팅될 값의 문자열 배열, 정렬 기준, having절, orderBy절)
// 7. 데이터 가져오기
button2.setOnClickListener { view ->
var helper = DBHelper(this)
var db = helper.writableDatabase
//var sql = "select * from TestTable"
//// 커서 클래스타입의 객체는 select해서 가져올 수 있는 객체의 클래스 타입이다.
//var c: Cursor = db.rawQuery(sql, null)
// 2. 클래스로 사용하기 - SELECT
// (테이블 이름 , 가져올 컬럼 이름의 문자열 배열, 조건절(값이 들어가는 부분은 ?로 작성. a=? and b=?), 조건절에 세팅될 값의 문자열 배열, 정렬 기준, having절, orderBy절)
var c = db.query("TestTable", null, null, null, null, null, null)
textView.text = ""
// 현재에서 다음 row(열)로 계속 넘어간다. 더이상 접근할게 없으면 false.
// 각 column(행)의 데이터를 가져오려면 column의 이름을 던져서 해당 컬럼이 몇번째 인덱스인지 받아오고, 그 인덱스가 가진 데이터를 가져와야한다.
while(c.moveToNext())
{
var idx_pos = c.getColumnIndex("idx")
var textData_pos = c.getColumnIndex("textData")
var intData_pos = c.getColumnIndex("intData")
var floatData_pos = c.getColumnIndex("floatData")
var DateData_pos = c.getColumnIndex("dataData")
var idx = c.getInt(idx_pos)
var textData = c.getString(textData_pos)
var intData = c.getInt(intData_pos)
var floatData = c.getDouble(floatData_pos)
var dateData = c.getString(DateData_pos)
textView.append("idx : ${idx}\n")
textView.append("textData : ${textData}\n")
textView.append("intData : ${intData}\n")
textView.append("floatData : ${floatData}\n")
textView.append("dateData : ${dateData}\n")
}
db.close()
}
3. UPDATE
// 8. 데이터 업데이트
button3.setOnClickListener { view ->
var helper = DBHelper(this)
var db = helper.writableDatabase
//var sql = "update TestTable set textData=? where idx=?"
//var args = arrayOf("문자열3", "1")
//db.execSQL(sql, args)
// 3. 클래스로 사용하기 - UPDATE
var cv = ContentValues()
cv.put("textData", "문자열3")
var where = "idx=?"
var args = arrayOf("1")
db.update("TestTable", cv, where, args)
db.close()
textView.text = "수정 완료"
}
4. DELETE
// 9. 데이터 삭제
button4.setOnClickListener { view ->
var helper = DBHelper(this)
var db = helper.writableDatabase
//var sql = "delete from TestTable where idx =?"
//var args = arrayOf("1")
//db.execSQL(sql, args)
var where ="idx=?"
var args = arrayOf("1")
db.delete("TestTable", where, args)
db.close()
textView.text = "삭제완료"
}
'Deperecated > Android_강의' 카테고리의 다른 글
안드로이드 - Context란 (0) | 2020.02.26 |
---|---|
안드로이드 - Content Provider (0) | 2020.02.20 |
안드로이드 - SQLite 데이터베이스(1) (0) | 2020.02.19 |
안드로이드 - 데이터 관리 - 파일 입출력 (0) | 2020.02.19 |
안드로이드 - DialogFragment (0) | 2020.02.19 |