안드로이드 SQlite

k_hyun·2023년 3월 24일
0

SQlite

안드로이드 폰에서 시용하는 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

0개의 댓글