SQLite (Kotlin 멀티플랫폼)

androidx.sqlite 라이브러리에는 SQLite에 액세스하는 자체 라이브러리를 빌드하는 데 사용할 수 있는 기본 구현과 함께 추상 인터페이스가 포함되어 있습니다. Room 라이브러리를 사용하는 것이 좋습니다. SQLite 위에 추상화 계층을 추가하여 보다 강력한 데이터베이스 액세스를 가능하게 하는 동시에 SQLite를 완벽히 활용하기 위한 것입니다.

종속 항목 설정

Kotlin 멀티 플랫폼을 지원하는 현재 버전의 androidx.sqlite (KMP)가 2.5.0-alpha01 이상입니다.

KMP 프로젝트에서 SQLite를 설정하려면 아티팩트의 종속 항목을 추가하세요. 모듈의 build.gradle.kts 파일에서 다음을 실행합니다.

  • androidx.sqlite:sqlite - SQLite 드라이버 인터페이스
  • androidx.sqlite:sqlite-bundled - 번들 드라이버 구현입니다.

SQLite 드라이버 API

androidx.sqlite 라이브러리 그룹은 다음과 같이 통신하기 위한 하위 수준 API를 제공합니다. SQLite 라이브러리를 androidx.sqlite:sqlite-bundled 또는 호스트 플랫폼(예: Android 또는 iOS) (androidx.sqlite:sqlite-framework 사용 시) API는 핵심 서비스, 기능을 제공합니다.

3가지 기본 인터페이스가 있습니다.

  • 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를 실행합니다. <ph type="x-smartling-placeholder">
      </ph>
    • 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 (데스크톱)

권장되는 구현은 BundledSQLiteDriver입니다. androidx.sqlite:sqlite-bundled입니다. 여기에는 모든 기기에 걸쳐 가장 최신 버전과 일관성을 제공하는 지원합니다

SQLite 드라이버 및 Room

드라이버 API는 SQLite 데이터베이스와의 하위 수준 상호작용에 유용합니다. SQLite 액세스를 더욱 강력하게 제공하는 기능이 풍부한 라이브러리의 경우 회의실을 사용하는 것이 좋습니다.

RoomDatabaseSQLiteDriver를 사용하여 데이터베이스 작업을 실행하고 구현은 다음을 사용하여 구성해야 합니다. RoomDatabase.Builder.setDriver() 객실 제공 RoomDatabase.useReaderConnectionRoomDatabase.useWriterConnection를 사용하면 관리형 서비스에 직접 액세스할 수 있습니다. 데이터베이스 연결입니다