docs/multiplatform_sqlite/index.md
{% 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 }}"
}
}
```
Create a common factory class or method to obtain a SqlDriver instance.
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' %}