androidx.sqlite
라이브러리에는 SQLite에 액세스하는 자체 라이브러리를 빌드하는 데 사용할 수 있는 기본 구현과 함께 추상 인터페이스가 포함되어 있습니다. 개발자는 SQLite를 완벽히 활용하면서 강력한 데이터베이스 액세스를 지원하는 SQLite에 추상화 레이어를 제공하는 Room 라이브러리 사용을 고려할 수 있습니다.
종속 항목 설정
Kotlin 멀티 플랫폼(KMP)을 지원하는 현재 androidx.sqlite
버전은 2.5.0-alpha01 이상입니다.
KMP 프로젝트에서 SQLite를 설정하려면 다음과 같이 모듈의 build.gradle.kts
파일에 아티팩트의 종속 항목을 추가합니다.
androidx.sqlite:sqlite
- SQLite 드라이버 인터페이스androidx.sqlite:sqlite-bundled
- 번들 드라이버 구현
SQLite Driver API
androidx.sqlite
라이브러리 그룹은 androidx.sqlite:sqlite-bundled
를 사용할 때 라이브러리에 포함되어 있거나 androidx.sqlite:sqlite-framework
를 사용할 때 Android 또는 iOS와 같은 호스트 플랫폼에서 포함된 SQLite 라이브러리와 통신하기 위한 하위 수준 API를 제공합니다. API는 SQLite C API의 핵심 기능을 거의 따릅니다.
세 가지 기본 인터페이스가 있습니다.
SQLiteDriver
- SQLite를 사용하는 진입점이며 데이터베이스 연결을 여는 역할을 합니다.SQLiteConnection
-sqlite3
객체의 표현입니다.SQLiteStatement
-sqlite3_stmt
객체의 표현입니다.
다음 예는 핵심 API를 보여줍니다.
fun main() {
val databaseConnection = BundledSQLiteDriver().open("todos.db")
databaseConnection.execSQL(
"CREATE TABLE IF NOT EXISTS Todo (id INTEGER PRIMARY KEY, content TEXT)"
)
databaseConnection.prepare(
"INSERT OR IGNORE INTO Todo (id, content) VALUES (? ,?)"
).use { stmt ->
stmt.bindInt(index = 1, value = 1)
stmt.bindText(index = 2, value = "Try Room in the KMP project.")
stmt.step()
}
databaseConnection.prepare("SELECT content FROM Todo").use { stmt ->
while (stmt.step()) {
println("Action item: ${stmt.getText(0)}")
}
}
databaseConnection.close()
}
SQLite C API와 마찬가지로 일반적인 사용법은 다음과 같습니다.
- 인스턴스화된
SQLiteDriver
구현을 사용하여 데이터베이스 연결을 엽니다. SQLiteConnection.prepare()
를 사용하여 SQL 문 준비- 다음과 같이
SQLiteStatement
를 실행합니다.- 필요한 경우
bind*()
함수를 사용하여 인수를 바인딩합니다. step()
함수를 사용하여 결과 집합을 반복합니다.get*()
함수를 사용하여 결과 집합에서 열 읽기
- 필요한 경우
드라이버 구현
다음 표에는 사용 가능한 드라이버 구현이 요약되어 있습니다.
클래스 이름 |
아티팩트 |
지원 플랫폼 |
AndroidSQLiteDriver |
androidx.sqlite:sqlite-framework |
Android |
NativeSQLiteDriver |
androidx.sqlite:sqlite-framework |
iOS, Mac, Linux |
BundledSQLiteDriver |
androidx.sqlite:sqlite-bundled |
Android, iOS, Mac, Linux, JVM (데스크톱) |
사용하도록 권장되는 구현은 androidx.sqlite:sqlite-bundled
에서 제공되는 BundledSQLiteDriver
입니다. 소스에서 컴파일된 SQLite 라이브러리를 포함하여 지원되는 모든 KMP 플랫폼에서 최신 버전과 일관성을 제공합니다.
SQLite 드라이버 및 공간
드라이버 API는 SQLite 데이터베이스와의 하위 수준 상호작용에 유용합니다. SQLite에 대한 더 강력한 액세스를 제공하는 기능이 풍부한 라이브러리의 경우 Room을 사용하는 것이 좋습니다.
RoomDatabase
는 SQLiteDriver
를 사용하여 데이터베이스 작업을 실행하며 구현은 RoomDatabase.Builder.setDriver()
를 사용하여 구성해야 합니다. Room은 RoomDatabase.useReaderConnection
및 RoomDatabase.useWriterConnection
를 제공하여 관리 데이터베이스 연결에 더 직접적으로 액세스할 수 있습니다.