我正在尝试过滤我的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来过滤这些结果?
答案 0 :(得分:1)
您几乎拥有它:
val selection = "${WalletEntry.KEY_TITLE} = ? AND ${WalletEntry.KEY_TRANSACTION_PLACE} IS NOT NULL"
答案 1 :(得分:0)
如github issue回答中所述,数据库API不允许传递NULL值作为参数。只允许使用字符串。因此,我更喜欢在这里使用简单的SQL查询。或者,如果您的应用程序使用非常复杂的数据库,则可以使用新的this持久性库。