안드로이드 폰에서 시용하는 db관리 시스템은 SQLite이다.
앱의 저장소에 파일로 저장하며, 외부 앱에서는 접근할 수 없다.
// DB파일을 열고 객체를 받아온다. 파일이 없으면 새로 만듦
val db = openOrCreateDatabase("testdb", Context.MODE_PRIVATE, null)
// 테이블 생성 (create문)
db.execSQL("create table USER_TB(" +
"_id integer primary key autoincrement," +
"name not null," +
"phone)"
// 데이터 삽입 (insert문)
db.execSQL("insert into USER_TB (name, phone) values (?,?)",
arrayOf<String>("name", "11121212"))
// 데이터 조회 (select문)
val cursor = db.rawQuery("select * from USER_TB", null)
// 선택한 행의 값 가져오기
while (cursor.moveToNext()) {
val name = cursor.getString(0)
val phone = cursor.getString(1)
}
// insert() 함수 사용
val values = ContentValues()
values.put("name", "lee")
values.put("phone", "12345678")
db.insert("USER_TB", null, values)
// query() 함수 사용
val cursor = db.query("USER_TB", arrayOf<String>("name", "phone"), "phone=?",
arrayOf<String>("12345678"), null, null, null)
질의문을 실행해야 할 때는 SQLiteDatabase 객체를 이용해야 한다.
추가로 SQLiteOpenHelper 클래스를 이용하면 테이블을 생성, 변경, 제거하는 코드를 작성할 수 있다.
class DBHelper(context: Context): SQLiteOpenHelper(context, "testdb", null, 1) {
// SQLiteOpenHelper 클래스가 이용되는 순간 한 번 호출한다.
override fun onCreate(db: SQLiteDatabase?) {}
// DB 버전 정보가 변경될 때마다 호출한다.
override fun onUpgrdate(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {}
}
// 데이터베이스 객체 생성
val db:SQLiteDatabase = DBHelper(this).writableDatabase