Back to Sqldelight

Getting Started with SQLite on Multiplatform

docs/multiplatform_sqlite/index.md

2.3.22.6 KB
Original Source

Getting Started with SQLite on Multiplatform

{% include 'common/index_gradle_database.md' %}

{% include 'multiplatform_sqlite/index_schema.md' %}

To use the generated database in your code, you must add a SQLDelight driver dependency to your project. Each target platform has its own driver implementation.

=== "Kotlin" ```kotlin kotlin { sourceSets.androidMain.dependencies { implementation("app.cash.sqldelight:android-driver:{{ versions.sqldelight }}") }

  // or iosMain, windowsMain, etc.
  sourceSets.nativeMain.dependencies {
    implementation("app.cash.sqldelight:native-driver:{{ versions.sqldelight }}")
  }

  sourceSets.jvmMain.dependencies {
    implementation("app.cash.sqldelight:sqlite-driver:{{ versions.sqldelight }}")
  }
}
```

=== "Groovy" ```groovy kotlin { sourceSets.androidMain.dependencies { implementation "app.cash.sqldelight:android-driver:{{ versions.sqldelight }}" }

  // or iosMain, windowsMain, etc.
  sourceSets.nativeMain.dependencies {
    implementation "app.cash.sqldelight:native-driver:{{ versions.sqldelight }}"
  }

  sourceSets.jvmMain.dependencies {
    implementation "app.cash.sqldelight:sqlite-driver:{{ versions.sqldelight }}"
  }
}
```

Constructing Driver Instances

Create a common factory class or method to obtain a SqlDriver instance.

kotlin
import com.example.Database

expect class DriverFactory {
  fun createDriver(): SqlDriver
}

fun createDatabase(driverFactory: DriverFactory): Database {
  val driver = driverFactory.createDriver()
  val database = Database(driver)

  // Do more work with the database (see below).
}

Then implement this for each target platform:

=== "src/androidMain/kotlin" kotlin actual class DriverFactory(private val context: Context) { actual fun createDriver(): SqlDriver { return AndroidSqliteDriver(Database.Schema, context, "test.db") } } === "src/nativeMain/kotlin" kotlin actual class DriverFactory { actual fun createDriver(): SqlDriver { return NativeSqliteDriver(Database.Schema, "test.db") } } === "src/jvmMain/kotlin" kotlin actual class DriverFactory { actual fun createDriver(): SqlDriver { val driver: SqlDriver = JdbcSqliteDriver("jdbc:sqlite:test.db", Properties(), Database.Schema) return driver } }

For use with Kotlin/JS, see here.

{% include 'common/index_queries.md' %}