美文网首页
[学习]SQLite操作(一)

[学习]SQLite操作(一)

作者: 吴敬悦 | 来源:发表于2021-03-01 23:25 被阅读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 来看数据库的情况。改天使用这个新东西看数据库。

    相关文章

      网友评论

          本文标题:[学习]SQLite操作(一)

          本文链接:https://www.haomeiwen.com/subject/tkmzfltx.html