繁体   English   中英

过滤数据库并显示满足 2 个条件的结果

[英]Filter database and show results where 2 conditions are met

我正在尝试过滤我的 sqlite 数据库以仅显示满足多个条件的结果。

override fun onCreateLoader(p0: Int, p1: Bundle?): Loader<Cursor> {
    val projection = arrayOf(
            WalletEntry._ID,
            WalletEntry.KEY_TITLE,
            WalletEntry.KEY_LAST_DATE,
            WalletEntry.KEY_TRANSACTION_PLACE,
            WalletEntry.KEY_LAST_EXPENSE_VALUE,
            WalletEntry.KEY_LAST_TRANSACTION_TITLE,
            WalletEntry.KEY_VALUE_AFTER,
            WalletEntry.KEY_LOCALES,
            WalletEntry.KEY_CURRENCY
    )

    val data = "string" // specified result

    val selection = "${WalletEntry.KEY_TITLE} = ?" // AND WalletEntry.KEY_TRANSACTION_PLACE IS NOT NULL
    val selectionArgs = arrayOf(data)

    return applicationContext?.let { context ->
        CursorLoader(context,
                WalletEntry.CONTENT_URI,
                projection,
                selection,
                selectionArgs,
                null)
    }!!
}

我的意思是,在我提供的初始化选择的代码中,我想选择标题等于变量data行,并且列KEY_TRANSACTION_PLACE不为空。

那么,我应该如何更正我的 selection/selectionArgs 以过滤这些结果?

你几乎拥有它:

val selection = "${WalletEntry.KEY_TITLE} = ? AND ${WalletEntry.KEY_TRANSACTION_PLACE} IS NOT NULL"

正如在这个答案中回答的那样,数据库 API 不允许将 NULL 值作为参数传递。 只允许使用字符串。 所以我更喜欢在这里使用简单的 SQL 查询。 或者,如果您的应用程序使用非常复杂的数据库,您可以使用新的Room持久性库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM