在调用loadquery时,为什么我们传递“%”

时间:2019-07-24 02:51:19

标签: kotlin android-sqlite

我在sqlite数据库中保存了一个id,title,discription,因此在加载时我通过了loadquery(“%”),我不明白这个%的含义,而是为您提供功能代码。

// calling the loadquery
Loadquery("%")



fun Loadquery(title:String)
{

    var dbManager=DbManager(this)
    val projections= arrayOf("ID","Title","Description")// array of cols
    val selectionArgs= arrayOf(title)                   // array of rows
    val cursor=dbManager.Query(projections,"Title like ?",selectionArgs,"Title")
    list_notes.clear()
    if(cursor.moveToFirst())
    {

        do{
            val ID=cursor.getInt(cursor.getColumnIndex("ID"))
            val Title=cursor.getString(cursor.getColumnIndex("Title"))
            val Description=cursor.getString(cursor.getColumnIndex("Description"))

            list_notes.add(note(ID,Title,Description))

        }
        while (cursor.moveToNext())
    }

    var myNotesAdapter= myadapter(list_notes)
    lis.adapter=myNotesAdapter


}

1 个答案:

答案 0 :(得分:1)

% 是通配符序列,因此查询将返回标题为任何内容的所有行。

如果您通过了 a% ,它将返回所有以A开头的行(或A,因为LIKE不区分大小写)。

如果您通过了 %a% ,则它将返回标题中带有任意位置的所有行,依此类推。

SQL As Understood By SQLite - expression - The LIKE, GLOB, REGEXP, and MATCH operators说:-

  

LIKE运算符进行模式匹配比较。

     

操作数   LIKE运算符的右侧包含模式和左手   操作数包含要与模式匹配的字符串。

     

百分比   LIKE模式中的符号(“%”)与零或更大的任何序列匹配   字符串中的字符。

     

LIKE模式中的下划线(“ _”)   匹配字符串中的任何单个字符。任何其他字符   匹配自身或其等效的小写/大写字母(即   不区分大小写的匹配)。

     

重要说明:SQLite仅能理解   默认情况下,ASCII字符的大写/小写。 LIKE运算子是   默认情况下,区分大小写的Unicode字符超出   ASCII范围。