Thư viện androidx.sqlite
chứa các lớp giao tiếp trừu tượng cùng với các hàm triển khai cơ bản giúp bạn tự xây dựng những thư viện liên kết với SQLite. Bạn nên cân nhắc sử dụng thư viện Room. Thư viện này cung cấp
một tầng trừu tượng trên SQLite để cho phép truy cập cơ sở dữ liệu hiệu quả hơn trong khi
khai thác toàn bộ sức mạnh của SQLite.
Thiết lập phần phụ thuộc
Phiên bản hiện tại của androidx.sqlite
hỗ trợ Kotlin Multi-Platform
(KMP) là 2.5.0-alpha01 trở lên.
Để thiết lập SQLite trong dự án KMP, hãy thêm phần phụ thuộc cho cấu phần phần mềm
trong tệp build.gradle.kts
cho mô-đun của bạn:
androidx.sqlite:sqlite
– Giao diện Trình điều khiển SQLiteandroidx.sqlite:sqlite-bundled
– Triển khai trình điều khiển đi kèm
API trình điều khiển SQLite
Các nhóm thư viện androidx.sqlite
cung cấp API cấp thấp để giao tiếp với
thư viện SQLite có trong thư viện khi sử dụng
androidx.sqlite:sqlite-bundled
hoặc trong nền tảng lưu trữ, chẳng hạn như Android hoặc iOS
khi dùng androidx.sqlite:sqlite-framework
. Các API tuân thủ chặt chẽ phần cốt lõi
của SQLite C API.
Có 3 giao diện chính:
SQLiteDriver
– Đây là điểm truy cập để sử dụng SQLite và chịu trách nhiệm để mở các kết nối cơ sở dữ liệu.SQLiteConnection
– Là đại diện của đối tượngsqlite3
.SQLiteStatement
– Là đại diện của đối tượngsqlite3_stmt
.
Ví dụ sau đây trình bày các API cốt lõi:
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()
}
Tương tự như API SQLite C, cách sử dụng phổ biến là:
- Mở kết nối cơ sở dữ liệu bằng
SQLiteDriver
đã tạo thực thể trong quá trình triển khai. - Chuẩn bị câu lệnh SQL bằng
SQLiteConnection.prepare()
- Thực thi
SQLiteStatement
bằng cách:- Liên kết tuỳ ý các đối số bằng cách sử dụng các hàm
bind*()
. - Lặp lại tập hợp kết quả bằng cách sử dụng hàm
step()
. - Đọc các cột trong tập hợp kết quả bằng các hàm
get*()
.
- Liên kết tuỳ ý các đối số bằng cách sử dụng các hàm
Triển khai trình điều khiển
Bảng sau đây tóm tắt các cách triển khai trình điều khiển có sẵn:
Tên lớp |
Cấu phần phần mềm |
Nền tảng được hỗ trợ |
AndroidSQLiteDriver |
androidx.sqlite:sqlite-framework |
Android |
NativeSQLiteDriver |
androidx.sqlite:sqlite-framework |
iOS, Mac và Linux |
BundledSQLiteDriver |
androidx.sqlite:sqlite-bundled |
Android, iOS, Mac, Linux và JVM (Máy tính) |
Cách triển khai được đề xuất để sử dụng là BundledSQLiteDriver
có sẵn trong
androidx.sqlite:sqlite-bundled
. Thư viện này bao gồm thư viện SQLite được biên dịch từ
nguồn, cung cấp phiên bản cập nhật nhất và tính nhất quán trên tất cả
các nền tảng KMP được hỗ trợ.
Room và trình điều khiển SQLite
API trình điều khiển rất hữu ích cho các hoạt động tương tác cấp thấp với cơ sở dữ liệu SQLite. Đối với thư viện nhiều tính năng cung cấp quyền truy cập mạnh mẽ hơn vào SQLite, thì Bạn nên chọn phòng.
RoomDatabase
dựa vào SQLiteDriver
để thực hiện các thao tác với cơ sở dữ liệu và
bắt buộc phải định cấu hình quá trình triển khai bằng
RoomDatabase.Builder.setDriver()
. Dịch vụ phòng
RoomDatabase.useReaderConnection
và
RoomDatabase.useWriterConnection
để có thêm quyền truy cập trực tiếp vào
kết nối cơ sở dữ liệu.