[学习]SQLite操作(一)

2021-03-01  本文已影响0人  吴敬悦

官网学习地址: 使用 SQLite 保存数据

今天就学习准备工作以及插入操作。

对于数据库我们知道有以下几步,首先要创建一个数据库,然后就是各种建表,等这一波操作完成了才能进行相关的操作。

android 中的 SQLite ,创建数据库还得指定版本号,我觉得是为了管理,当我觉得不应该强制要求。

在使用 SQLite 之前,首先需要继承 SQLiteOpenHelper ,在方法 onCreate 中执行创建的工作,因为创建数据库在默认情况下是非常简单的,所以不需要我们手动写创建的语句,我说的创建主要是创建跟表相关的操作:

class FeedReaderDbHelper(context: Context) : SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) {
    override fun onCreate(db: SQLiteDatabase) {
        // 这里是创建表,对应的 sql 语句就是 SQL_CREATE_ENTRIES 中保存的
        db.execSQL(SQL_CREATE_ENTRIES)
    }
    override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
        // 这里先不管,几天不学习这个
        db.execSQL(SQL_DELETE_ENTRIES)
        onCreate(db)
    }
    override fun onDowngrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
        // 这里也不管
        onUpgrade(db, oldVersion, newVersion)
    }
    // 定义相关的常量,这里是数据库名称和版本号
    companion object {
        const val DATABASE_VERSION = 1
        const val DATABASE_NAME = "FeedReader.db"
    }
}

看看 SQL_CREATE_ENTRIES 的执行语句:

private const val SQL_CREATE_ENTRIES =
    "CREATE TABLE ${FeedReaderContract.FeedEntry.TABLE_NAME} (" +
            "${BaseColumns._ID} INTEGER PRIMARY KEY," +
            "${FeedReaderContract.FeedEntry.COLUMN_NAME_TITLE} TEXT," +
            "${FeedReaderContract.FeedEntry.COLUMN_NAME_SUBTITLE} TEXT)"

这里的表名可以直接在这里指定,也可以在专门的地方进行定义,在官网的教程里,是在其他地方定义的:

object FeedReaderContract {
    object FeedEntry : BaseColumns {
        const val TABLE_NAME = "entry"
        const val COLUMN_NAME_TITLE = "title"
        const val COLUMN_NAME_SUBTITLE = "subtitle"
    }
}

这里定义好跟这个表相关的内容,在上面就可以直接使用了;如果还有其他的都可以写到这个对象中。接下来就是使用了,如果是进行写操作,那么在获取操作对象,也就是上面 FeedReaderDbHelper 类的对象时,需要获取 writableDatabase 的操作:

// 获取数据库操作对象
val dbHelper = FeedReaderDbHelper(this)
val db = dbHelper.writableDatabase

可以通过 ContentValues 来组装插入语句:

val values = ContentValues().apply {
    put(FeedReaderContract.FeedEntry.COLUMN_NAME_TITLE, "数据库")
    put(FeedReaderContract.FeedEntry.COLUMN_NAME_SUBTITLE, "SQLite")
}

这里我插入的值为: title: 数据库subtitle:SQLite。接下来就可以执行插入操作了:

val newRowId = db?.insert(FeedReaderContract.FeedEntry.TABLE_NAME, null, values)

这样就成功插入了一条记录,只是我们现在还不知道怎么看,没关系,在 android studio 中有提供,在下面有个 Database Inspector 的选项卡,点开刷新一下就能够看到你所创建的。

插入后数据效果
当然除了这个方式可以,还可以使用 Filpper 来看数据库的情况。改天使用这个新东西看数据库。
上一篇下一篇

猜你喜欢

热点阅读