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

[学习]SQLite操作(二)

作者: 吴敬悦 | 来源:发表于2021-03-02 22:50 被阅读0次

今天学习了数据库的简单的查询操作。
现在还没有用上高级的查询,而是普通的查询。

今天这个是接着昨天的,使用昨天创建的表。

查询使用 query 函数,看函数定义:

  /**
     * Query the given table, returning a {@link Cursor} over the result set.
     *
     * @param table The table name to compile the query against.
     * @param columns A list of which columns to return. Passing null will
     *            return all columns, which is discouraged to prevent reading
     *            data from storage that isn't going to be used.
     * @param selection A filter declaring which rows to return, formatted as an
     *            SQL WHERE clause (excluding the WHERE itself). Passing null
     *            will return all rows for the given table.
     * @param selectionArgs You may include ?s in selection, which will be
     *         replaced by the values from selectionArgs, in order that they
     *         appear in the selection. The values will be bound as Strings.
     * @param groupBy A filter declaring how to group rows, formatted as an SQL
     *            GROUP BY clause (excluding the GROUP BY itself). Passing null
     *            will cause the rows to not be grouped.
     * @param having A filter declare which row groups to include in the cursor,
     *            if row grouping is being used, formatted as an SQL HAVING
     *            clause (excluding the HAVING itself). Passing null will cause
     *            all row groups to be included, and is required when row
     *            grouping is not being used.
     * @param orderBy How to order the rows, formatted as an SQL ORDER BY clause
     *            (excluding the ORDER BY itself). Passing null will use the
     *            default sort order, which may be unordered.
     * @return A {@link Cursor} object, which is positioned before the first entry. Note that
     * {@link Cursor}s are not synchronized, see the documentation for more details.
     * @see Cursor
     */
    public Cursor query(String table, String[] columns, String selection,
            String[] selectionArgs, String groupBy, String having,
            String orderBy) {

        return query(false, table, columns, selection, selectionArgs, groupBy,
                having, orderBy, null /* limit */);
    }

参数含义:

  • table 要查询的表名;
  • columns 要返回的列的列表。传递null将返回所有列,这是不鼓励使用 null 参数,以防止从存储中读取不使用的数据;
  • selection 声明要返回哪些行的筛选器,也就是 SQL 里面的 WHERE 子句(WHERE本身除外)。传递null将返回给定表的所有行;
  • selectionArgs 专门用于替换 selection 中的 ? 的位置;
  • groupBy 声明如何对行进行分组的筛选器,格式为SQL group BY子句(不包括组本身)。传递null将导致行不分组;
  • having 如果正在使用行分组,则筛选器将声明游标中要包含的行组格式化为SQL HAVING子句(HAVING本身除外)。传递null将导致包含所有行组,并且在不使用行分组时是必需的。
  • orderBy 如何对行进行排序,格式化为SQL order BY子句(不包括order本身)。传递null将使用默认的排序顺序,这可能是无序的。

下面看具体的使用:

// 如果要进行读取操作,首先获取其对应的对象
val db = dbHelper.readableDatabase

接下来就是组装上面说的参数:

val projection = arrayOf(BaseColumns._ID, FeedReaderContract.FeedEntry.COLUMN_NAME_TITLE, FeedReaderContract.FeedEntry.COLUMN_NAME_SUBTITLE)
val selection = "${FeedReaderContract.FeedEntry.COLUMN_NAME_TITLE} = ?"
val selectionArgs = arrayOf("语言")
val sortOrder = "${FeedReaderContract.FeedEntry.COLUMN_NAME_SUBTITLE} DESC"

剩下的就使用 null 代替。接下来拿到 Cursor 对象:

val cursor = db.query(FeedReaderContract.FeedEntry.TABLE_NAME, projection, selection, selectionArgs, null, null, sortOrder)

然后从里面拿到自己想要的数据:

val itemIds = mutableListOf<String>()
with(cursor) {
    while (moveToNext()) {
        val itemId = getString(getColumnIndexOrThrow(FeedReaderContract.FeedEntry.COLUMN_NAME_SUBTITLE))
                itemIds.add(itemId)
        }
}

这样就可以看到所有 title 为“语言”的 subtitle 了。

相关文章

  • [学习]SQLite操作(二)

    今天学习了数据库的简单的查询操作。现在还没有用上高级的查询,而是普通的查询。 今天这个是接着昨天的,使用昨天创建的...

  • android笔记6

    本章学习目标: 了解SQLite数据库的特点和体系结构 掌握SQLite数据库的建立和操作方法 SQlite介绍 ...

  • [学习]SQLite操作(三)

    今天看删除。还是使用第一天创建的表 entry 。 我现在有需求,要删除 所在的这条记录: 在 android 中...

  • [学习]SQLite操作(一)

    官网学习地址: 使用 SQLite 保存数据[https://developer.android.com/trai...

  • [学习]SQLite操作(四)

    今天学习更新。 SQLite 删除[https://www.jianshu.com/p/a2c7bfe1b1b5]...

  • Android数据存储 - SQLite

    一、环境 安卓系统:4.2 操作系统:Win 8.1 工具:Android Studio 二、SQLite操作 新...

  • Django 操作默认的sqlite3 数据库

    sqlite3 操作 一、进入sqlite3 命令行 二、查看表 三、删除表 注意:sql结尾要的';'

  • SQLite快速入门教程

    这个SQLite快速入门教程教你如何有效地开始学习并使用SQLite。通过本教程的实践操作学习之后,相信你应该可以...

  • Sqlite 使用笔记

    1. 数据库基本操作封装 sqlite 数据操作 语句类型 sqlite 数据库的简单实用- 导入sqlite3数...

  • SQLite学习(二)

    获得数据库的 Schema 信息 1.通过.tables 获取所有表和视图的列表,以上一节为例查询: 可以看到我们...

网友评论

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

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