使用SQLite数据库在Android应用中存储数据

星辰之海姬 2024-01-14 ⋅ 28 阅读

SQLite

在Android开发中,我们经常需要将数据保存在本地设备上。SQLite是一种轻量级的关系型数据库,被广泛用于Android应用的数据存储。在本文中,我们将介绍如何在Android应用中使用SQLite数据库。

1. 引入SQLite库

首先要做的是在你的Android项目中引入SQLite库。在项目的build.gradle文件中,添加以下依赖:

dependencies {
    implementation "androidx.sqlite:sqlite:2.1.0"
}

2. 创建数据库

在Android中,我们通常将数据库操作封装到一个单独的类中。首先,我们需要创建一个继承自SQLiteOpenHelper的数据库帮助类。

class DatabaseHelper(context: Context) :
    SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) {

    companion object {
        private const val DATABASE_VERSION = 1
        private const val DATABASE_NAME = "myDatabase"
        private const val TABLE_NAME = "myTable"
        private const val KEY_ID = "id"
        private const val KEY_NAME = "name"
    }

    override fun onCreate(db: SQLiteDatabase) {
        val createTableQuery = "CREATE TABLE $TABLE_NAME ($KEY_ID INTEGER PRIMARY KEY, $KEY_NAME TEXT)"
        db.execSQL(createTableQuery)
    }

    override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
        val dropTableQuery = "DROP TABLE IF EXISTS $TABLE_NAME"
        db.execSQL(dropTableQuery)
        onCreate(db)
    }

    // 其他数据库操作方法...
}

在上面的代码中,我们定义了数据库的版本号、名称以及表格的名称和列名。在onCreate()方法中,我们执行SQL语句创建一个名为myTable的表格。

如果要进行数据库升级,我们可以使用onUpgrade()方法,在此方法中执行升级前的清理和创建新的表格。

3. 数据库操作方法

接下来,我们可以在数据库帮助类中定义一些用于数据库操作的方法。例如,我们可以添加插入数据的方法。

fun insertData(name: String): Long {
    val values = ContentValues()
    values.put(KEY_NAME, name)

    val db = this.writableDatabase
    val id = db.insert(TABLE_NAME, null, values)
    db.close()

    return id
}

在上面的代码中,我们创建了一个ContentValues对象,并使用put()方法将数据添加到其中。然后,我们获取可写的数据库对象,将数据插入myTable表格中,并返回插入的行的ID。

4. 使用数据库操作方法

现在,我们可以在我们的应用中使用数据库操作方法了。首先,我们需要创建数据库帮助类的实例。

val dbHelper = DatabaseHelper(context)

然后,我们可以调用数据库操作方法。

val id = dbHelper.insertData("John Doe")

5. 查询数据

查询数据也是非常常见的操作。我们可以为数据库帮助类添加一个查询方法。

fun getAllNames(): List<String> {
    val names = ArrayList<String>()
    val selectQuery = "SELECT $KEY_NAME FROM $TABLE_NAME"

    val db = this.readableDatabase
    val cursor = db.rawQuery(selectQuery, null)

    if (cursor.moveToFirst()) {
        do {
            val name = cursor.getString(cursor.getColumnIndex(KEY_NAME))
            names.add(name)
        } while (cursor.moveToNext())
    }

    cursor.close()
    db.close()

    return names
}

在上面的代码中,我们使用rawQuery()方法执行SQL查询,并使用游标遍历查询结果。最后,我们将每个查询到的名字添加到一个列表中,并返回该列表。

6. 更新和删除数据

更新和删除数据也是常见的数据库操作。我们可以为数据库帮助类添加类似的方法。

fun updateName(id: Long, newName: String): Int {
    val values = ContentValues()
    values.put(KEY_NAME, newName)

    val db = this.writableDatabase
    val rows = db.update(TABLE_NAME, values, "$KEY_ID=?", arrayOf(id.toString()))
    db.close()

    return rows
}

fun deleteName(id: Long): Int {
    val db = this.writableDatabase
    val rows = db.delete(TABLE_NAME, "$KEY_ID=?", arrayOf(id.toString()))
    db.close()

    return rows
}

在上面的代码中,updateName()方法将更新指定ID的行的名字。deleteName()方法将删除指定ID的行。

结论

SQLite是一种轻量级的关系型数据库,在Android开发中被广泛用于数据存储。本文介绍了如何在Android应用中使用SQLite数据库,并实现了插入、查询、更新和删除数据的操作。希望这篇博客对你有所帮助!


全部评论: 0

    我有话说: