Androidプラットフォーム(2.2)でDBへのパラメータを使用してクエリを作成するときに問題があります。それから私は、パラメータ化クエリを使用して、これを照会しようとしていますAndroid:SQLiteクエリは整数パラメータをバインドしていませんか?
db.execSQL("CREATE VIRTUAL TABLE " + Msg._TABLE_NAME + " USING FTS3 ("
+ Msg._ID + " INTEGER, "
(...)
+ Msg.READ + " SHORT DEFAULT 0,"
+ Msg.URGENT + " SHORT DEFAULT 0"
+ ");");
を::
String[] columns = new String[] {Msg.ROWID, Msg.TITLE, Msg.READ, Msg.URGENT};
(...)
getContentResolver().query(Msg.CONTENT_URI, columns,
Msg.URGENT + "=? AND " + Msg.READ + "=?" + , whereArgs, null);
whereArgs
は、クエリごとに異なり
:
String[] urgentUnread = new String[]{"1", "0"};
String[] regularUnread = new String[]{"0", "0"};
けど何で私はこのような表を作成しましたデータが存在しても結果/行は0を返します。コンテンツプロバイダはのparamsを変更しないと、クエリは、「直接」クエリを呼び出すときQueryBuilder使用だけでなく、何も返さない:
Cursor c = db.query(tables, columns, where, whereArgs, groupBy, having, orderBy, limit);
私は文字列の連結を行う場合は、クエリが動作します。
getContentResolver().query(Msg.CONTENT_URI, columns,
Msg.READ + "=0 AND " + Msg.URGENT + "=1", null, null);
が、それはparamクエリの目的を殺してしまい、キャッシュするのが面倒です。 Dalvikは(たくさんのクエリを作成した後で)クエリのためのキャッシュに空きがなく、皮肉なことに、 '?'でパラメータ化されたクエリを使用するように指示しています。私は、私を信じることを愛しています:)
私はJavaDocの状態はパラメータがStringSとしてバインドされていることを知っていますが、私はそれを信じることができません...メジャー...エーム、... WTF
どこが間違っていましたか?
ありがとうございます。
OKだけでなく、実際には、誰も解決策が出てこない場合は、共有するための名誉を見つけることができます。 –