Kotlin으로 SQLite를 활용해서 db생성, insert문, delete문, update문, select문을 사용하는 방법을 정리했습니다.
이전에 Java로 SQLite를 사용하는 방법을 정리한 적이 있는데, 언어가 바뀐 것을 제외하면 내용은 동일합니다
이전 포스팅 ☛ [Android] SQLite 사용법 정리
1. DB 생성
Kotlin Class 파일로 DBHelper.kt을 생성하고 아래의 코드를 복붙합니다.
class DBHelper(
context: Context?,
name: String?,
factory: SQLiteDatabase.CursorFactory?,
version: Int
) : SQLiteOpenHelper(context, name, factory, version) {
override fun onCreate(db: SQLiteDatabase) {
var sql : String = "CREATE TABLE if not exists mytable (" +
"_id integer primary key autoincrement," +
"txt text);";
db.execSQL(sql)
}
override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
val sql : String = "DROP TABLE if exists mytable"
db.execSQL(sql)
onCreate(db)
}
}
그리고 MainActivity.kt에 다음과 같이 dbHelper와 database를 선언합니다.
class MainActivity : AppCompatActivity() {
lateinit var dbHelper : DBHelper
lateinit var database :SQLiteDatabase
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
dbHelper = DBHelper(this, "newdb.db", null, 1)
database = dbHelper.writableDatabase
}
}
이제 DB를 생성하고 불러왔으니 SQL문법을 알아보겠습니다.
2. INSERT문 사용법
아래는 insert함수를 사용한 방법입니다.
var contentValues = ContentValues()
contentValues.put("txt","Bulgogi")
database.insert("mytable",null,contentValues)
execSQL함수를 사용할 수도 있습니다.
var query = "INSERT INTO mytable('txt') values('Bulgogi');"
database.execSQL(query)
3. SELECT문 사용법
SELECT는 query함수를 사용해서 구현할 수 있습니다.
아래는 "SELECT * FROM mytable"을 query로 구현한 것입니다.
var c : Cursor = database.query("mytable",null,null,null,null,null,null)
while(c.moveToNext()){
System.out.println("txt : "+c.getString(c.getColumnIndex("txt")));
}
아니면 insert처럼 그냥 execSQL함수를 사용할 수도 있습니다.
var query = "SELECT * FROM mytable;"
var c = database.rawQuery(query,null)
while(c.moveToNext()){
System.out.println("txt : "+c.getString(c.getColumnIndex("txt")));
}
저는 SQL문법에 익숙해서 이 방법이 더 편했습니다.
4. DELETE문 사용법
delete()함수를 사용해서 구현할 수 있습니다.
var arr : Array<String> = arrayOf("Bulgogi")
database.delete("mytable","txt=?",arr)
where clauses가 여러개라면 AND로 연결하면 됩니다.
var arr : Array<String> = arrayOf("Bulgogi","3")
database.delete("mytable","txt=? AND _id=?",arr)
마찬가지로, execSQL을 사용할 수도 있습니다. 내용은 생략하겠습니다.
5. UPDATE문 사용법
update()함수를 사용하거나, execSQL을 사용해서 구현할 수 있습니다.
var contentValues = ContentValues()
contentValues.put("txt","bye")
var arr : Array<String> = arrayOf("Bulgogi")
database.update("mytable",contentValues,"txt=?",arr)
기본적인 사용법은 여기까지입니다.
Java와 선언을 제외하고 크게 다르지 않아서 어렵지 않을거라고 생각합니다:>
잘못된 내용이 있다면 언제든지 댓글이나 메일로 알려주시면 감사하겠습니다.
이 포스팅이 도움이 되었다면 공감 부탁드립니다.
궁금한 점은 언제든지 댓글 남겨주시면 답변해드리겠습니다:D
'major > Android' 카테고리의 다른 글
구글 플레이 앱 업데이트, 버그 수정, 삽질기 (0) | 2020.03.30 |
---|---|
[Android] 갤러리 이미지 URI를 SQLite에 저장하고 불러오기 (7) | 2020.03.30 |
[Kotlin] 네이버 오픈 API 검색 사용하기 (0) | 2020.03.27 |
[Kotlin] 공공 데이터 - 공적 마스크 데이터 구글맵에 띄우기 (0) | 2020.03.26 |
[Android] Google Map 사용하기 (0) | 2020.03.26 |