Работа с SQLite в Kotlin
НАВИГАЦИЯ ПО СТРАНИЦЕ
В Kotlin можно использовать библиотеку для работы с базой данных SQLite. В Android, часто используется SQLiteOpenHelper для управления базой данных. Давайте рассмотрим основы работы с SQLite в Kotlin на примере Android-приложения.
Использование SQLiteOpenHelper
import android.content.Context
import android.database.sqlite.SQLiteDatabase
import android.database.sqlite.SQLiteOpenHelper
class DatabaseHelper(context: Context) : SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) {
companion object {
private const val DATABASE_NAME = "mydatabase.db"
private const val DATABASE_VERSION = 1
private const val TABLE_NAME = "mytable"
private const val COLUMN_ID = "_id"
private const val COLUMN_NAME = "name"
}
override fun onCreate(db: SQLiteDatabase) {
val createTableQuery = """
CREATE TABLE $TABLE_NAME (
$COLUMN_ID INTEGER PRIMARY KEY AUTOINCREMENT,
$COLUMN_NAME TEXT
);
""".trimIndent()
db.execSQL(createTableQuery)
}
override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
db.execSQL("DROP TABLE IF EXISTS $TABLE_NAME")
onCreate(db)
}
}
Операции CRUD
import android.content.ContentValues
import android.content.Context
import android.database.Cursor
import android.database.sqlite.SQLiteDatabase
class MyDataSource(context: Context) {
private val databaseHelper: DatabaseHelper = DatabaseHelper(context)
private val db: SQLiteDatabase = databaseHelper.writableDatabase
fun insertData(name: String): Long {
val contentValues = ContentValues().apply {
put(DatabaseHelper.COLUMN_NAME, name)
}
return db.insert(DatabaseHelper.TABLE_NAME, null, contentValues)
}
fun readData(): List<String> {
val result: MutableList<String> = ArrayList()
val cursor: Cursor = db.query(
DatabaseHelper.TABLE_NAME,
arrayOf(DatabaseHelper.COLUMN_NAME),
null, null, null, null, null
)
while (cursor.moveToNext()) {
val name = cursor.getString(cursor.getColumnIndex(DatabaseHelper.COLUMN_NAME))
result.add(name)
}
cursor.close()
return result
}
fun updateData(id: Long, newName: String): Int {
val contentValues = ContentValues().apply {
put(DatabaseHelper.COLUMN_NAME, newName)
}
return db.update(
DatabaseHelper.TABLE_NAME,
contentValues,
"${DatabaseHelper.COLUMN_ID} = ?",
arrayOf(id.toString())
)
}
fun deleteData(id: Long): Int {
return db.delete(
DatabaseHelper.TABLE_NAME,
"${DatabaseHelper.COLUMN_ID} = ?",
arrayOf(id.toString())
)
}
}
В этом примере:
DatabaseHelper отвечает за создание и обновление базы данных.
MyDataSource содержит операции CRUD (Create, Read, Update, Delete) для взаимодействия с базой данных.
Пример использования:
val dataSource = MyDataSource(context)
// Insert
val newId = dataSource.insertData("John Doe")
// Read
val data = dataSource.readData()
// Update
dataSource.updateData(newId, "Updated Name")
// Delete
dataSource.deleteData(newId)
Это основы работы с SQLite в Kotlin, включая использование SQLiteOpenHelper для управления базой данных и операции CRUD для взаимодействия с данными. В реальном приложении следует обеспечить безопасность и проверку ошибок для обработки потенциальных проблем при работе с базой данных.