以下のようなクエリを実行すると発生する。
SQLiteDatabase.rawQuery(“select XX from YY where ZZ like ?”,new String[]{“%hoge%”}});
どうも、SQLiteDatabase.rawQueryの第二引数(selectionArgs)を解釈するコードがおかしいらしく、うまく動かない。
以下のように書く必要があるらしい。
SQLiteDatabase.rawQuery(“select XX from YY where a like ‘%’ || ?1 || ‘%'”,new String[]{“hoge”}});
selectionArgsに指定した数と ?の数が合わなくてもエラーになるようで*1 、selectionArgsを動的に組み上げるのでなければ評価したときに真になるように ?を含む式をでっち上げる必要があるみたい。
この記事はバッドノウハウな気がしないでもない。
*1 エラーメッセージの意味を考えると、%を入れることでどういう訳かカウントがおかしくなって~という事なんだろうな。