« タクティクスオウガ運命の輪の合成レシピを見るアプリを作ってみた | トップページ | Android Market統計情報 »

2011年2月16日 (水)

android.database.sqlite.SQLiteDatabaseでLIKE検索にてバインド変数を使うと例外

どハマリした結果、ミドルウェアのバグだと分かってゲンナリすることってありますよね。
先日、android.database.sqlite.SQLiteDatabase#rawQuery()でLIKE検索すると意味不明な例外が発生して困りました。

↓これを実行すると・・・
db.rawQuery("SELECT HOGE FROM HOGES WHERE NAME FOO '%?%'", new String[]{str});

↓こうなる。
android.database.sqlite.SQLiteException: bind or column index out of range: handle 0x18a0f8

「バインドまたは列のインデックスが範囲外です。」????
他のSQLiteの実装だと全く同じクエリでも動くので、Android固有の問題の模様。
ちなみにバインド変数を使うのを止めると動く。

↓これはOK
db.rawQuery("SELECT HOGE FROM HOGES WHERE NAME LIKE '%" + str + "%'", null);

全然、ワカラン・・・。

ということで散々探して答えを見つけました。
こちら

« タクティクスオウガ運命の輪の合成レシピを見るアプリを作ってみた | トップページ | Android Market統計情報 »

Android」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/561728/50888053

この記事へのトラックバック一覧です: android.database.sqlite.SQLiteDatabaseでLIKE検索にてバインド変数を使うと例外:

» PHP+SQLite:あいまい検索 [ぱふぅ家のホームページ]
PHP+SQLite:あいまい検索【更新】HTML5対応 [続きを読む]

« タクティクスオウガ運命の輪の合成レシピを見るアプリを作ってみた | トップページ | Android Market統計情報 »